C++ new和delete操作符使用

在C语言中,动态分配内存用 malloc() 函数,释放内存用 free() 函数。如下所示: int *p = (int*) malloc( sizeof(int) * 10 ); //分配10个int型的内存空间 free(p); //释放内存 在C++中,这两个函数仍然可以使用,但是C++又新增了两个关键字,new 和 delete:new 用来动态分配内存,delete 用来释放内存。     Continue Reading
Xiho's avatar
Xiho Sep 12, 2016
 | 

C++ string字符串的增删改查

c++ 提供的string类包含了若干实用的成员函数,大大方便了字符串的增加、删除、更改、查询等操作。 插入字符串insert()函数可以在string字符串中置顶的位置插入另一个字符串,它的原型为: string& insert (size_t pos, const string& str); 看这个插入的格式我们就能猜想到,pos表示要插入的下标;str表示要插入的字符串,它可以是string变量,也可以是C风格的字符串。     Continue Reading
Xiho's avatar
Xiho Sep 11, 2016
 | 

C++ string类和字符串的访问和拼接操作

C++ 增强了对字符串的支持,除了可以使用c中的字符串,还可以使用内置的数据类型string,string类处理字符串会翻遍很多,完全可以代替C语言中的char 数组和char 指针。 使用sting类需要包含头文件< sting >, 下面我们就来介绍怎么使用。 string 的几种用法: #include <iostream> #include <string> using namespace std; void main(){ string s1; string s2 = "c plus plus"; string s3 = s2; string s4(5, 's'); cout << s1 << s2 << s3 << s4 << endl; system("pause"); } 输出结果: c plus plusc plus plussssss 请按任意键继续. . .     Continue Reading
Xiho's avatar
Xiho Sep 11, 2016
 | 

C语言(七)文件的相关操作

C语言文件的打开与关闭 在C语言中,文件操作都是由库函数来完成的,我们就来总结文件的相关的操作。 文件的打开(fopen函数)fopen() 函数用来打开一个文件,它的格式为: FILE *fopen(char *filename, char *type); filename为文件名(包括文件路径),type为打开方式,它们都是字符串。fopen() 会获取文件信息,包括文件名、文件状态、当前读写位置等,并将这些信息保存到一个FILE类型的结构体变量中,然后将该变量的地址返回。 如果接收 fopen() 的返回值,就需要定义一个 FILE 类型的指针。例如: FILE *fp = ("demo.txt", "r");     Continue Reading
Xiho's avatar
Xiho Aug 29, 2016
 | 

C语言(六)结构体和联合体

结构体在C语言中,可以使用结构体(Struct)来存放一组不同类型的数据。结构体的定义形式为: struct 结构体名{ 结构体所包含的变量或数组 }; 结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相同,也可以不同,每个这样的变量或数组都称为结构体的成员(Member)。请看下面的一个栗子: struct stu{ char *name; //姓名 int num; //学号 int age; //年龄 char group; //所在学习小组 float score; //成绩 };     Continue Reading
Xiho's avatar
Xiho Aug 25, 2016
 | 

C语言(五)内存分配与释放

首先我们来科普一下: 什么是堆?说到堆,又忍不住说到了栈!什么是 栈?1、什么是堆:堆是大家共有的空间,分全局堆和局部堆。全局堆就是所有没有分配的空间,局部堆就是用户分配的空间。堆在操作系统对进程 初始化的时候分配,运行过程中也可以向系统要额外的堆,但是记得用完了要还给操作系统,要不然就是内存泄漏。2、什么是栈:栈是线程独有的,保存其运行状态和局部自动变量的。栈在线程开始的时候初始化,每个线程的栈互相独立。每个函数都有自己的栈,栈被用来在函数之间传递参数。操作系统在切换线程的时候会自动的切换栈,就是切换SS/ESP寄存器。栈空间不需要在高级语言里面显式的分配和释放。 C语言程序编译的内存分配,堆与栈的区别: 栈是由编译器自动分配释放,存放函数的参数值、局部变量的值等。操作方式类似于数据结构中的栈。堆一般由程序员分配释放,若不释放,程序结束时可能由OS回收。注意这里说是可能,并非一定。再强调一次,记得要释放! 栈区(stack) : //windows下,栈内存分配2M(确定的常数),超出了限制,提示stack overflow错误 //编译器自动分配释放,主要存放函数的参数值,局部变量值等; 堆区(heap):程序员手动分配释放,操作系统80%内存 全局区或静态区:存放全局变量和静态变量;程序结束时由系统释放,分为全局初始化区和全局未初始化区; 字符常量区:常量字符串放与此,程序结束时由系统释放; 程序代码区:存放函数体的二进制代码。     Continue Reading
Xiho's avatar
Xiho Aug 23, 2016
 | 

C语言(四)指针概念的理解

前言最近真的是忙的不可开交,公司一直给安排任务,连学习和写笔记的时间都没有了,落下好几次课的笔记都没有写,所以我抽空把目前的进度给追上来,不然会越落越多。加油吧~(感觉身体都要被掏空了) 指针 我们通过指针,可以简化一些 C 编程任务的执行,还有一些任务,如动态内存分配,没有指针是无法执行的。所以,学习指针是很有必要的。正如您所知道的,每一个变量都有一个内存位置,每一个内存位置都定义了可使用连字号(&)运算符访问的地址,它表示了在内存中的一个地址。请看下面的实例,它将输出定义的变量地址:     Continue Reading
Xiho's avatar
Xiho Aug 22, 2016
 | 

C语言(三)字符串处理函数

C语言提供了丰富的字符串处理函数,例如字符串的输入、输出、合并、修改、比较、转换、复制、搜索等,使用这些现成的函数可大大减轻编程的负担。 用于输入输出的字符串函数,例如printf、puts、scanf、gets等,使用时应包含头文件stdio.h,使用其它字符串函数则应包含头文件string.h。     Continue Reading
Xiho's avatar
Xiho Aug 13, 2016
 | 

C语言(二)有符号和无符号的理解

1.你自已决定是否需要有正负:就像我们必须决定某个量使用整数还是实数,使用多大的范围数一样,我们必须自已决定某个量是否需要正负。如果这个量不会有负值,那么我们可以定它为带正负的类型。 在计算机中,可以区分正负的类型,称为有符类型(signed),无正负的类型(只有正值),称为无符类型。 (unsigned)数值类型分为整型或实型,其中整型又分为无符类型或有符类型,而实型则只有符类型。 字符类型也分为有符和无符类型。 比如有两个量,年龄和库存,我们可以定前者为无符的字符类型,后者定为有符的整数类型。 2.使用二制数中的最高位表示正负: 首先得知道最高位是哪一位?1个字节的类型,如字符类型,最高位是第7位,2个字节的数,最高位是第15位,4个字节的数,最高位是第31位。不同长度的数值类型,其最高位也就不同,但总是最左边的那位(如下示意)。字符类型固定是1个字节,所以最高位总是第7位。     Continue Reading
Xiho's avatar
Xiho Aug 07, 2016
 | 

C语言(一)的基本数据类型

C语言helloworld 1.声明头文件,相当于java的导包。 //只有函数的声明,编译时会去找到函数的实现 #include <stdio.h>     Continue Reading
Xiho's avatar
Xiho Aug 07, 2016
 |