typedefName arrayName[arraysize]
2、字符串(1)字符串的尾部为"";
(2)字符串常量其实代表字符串所在的内存地址:
const char* p = "s"是合法的;
char p ="s"是不合法的,其原因在于"s"代表了其所在地址,不是char类型的,而是char* 类型的。
(3)strlen与sizeof区别:
char name[20] = "lucy";
sizof计算整个数组的长度,无论其内容是否为"",因此sizeof(name)=20;
strlen只计算数组中不为""的元素,因此strlen(name)=4;
(4)get和getline的区别:
getline:获取一行输入:cin.getline(readbuffer,readlength),遇到换行时退出函数,getline会将换行符读取;
get:获取一行输入:cin.get(readbuffer,readlength),遇到换行时退出函数, get不会将换行符读取,还会将其留在输入序列中,因此在使用get后还需要调用不带参的get()函数获取换行符:cin.get(readbuffer,readlength).get();
3、结构体略
4、共用体能够存储不同的类型,根据选择的显示类型可以进行不同的显示,因此可以进行类型转换。
5、枚举类略
6、指针和自由存储空间C++在运行时进行决策,例如分配多长的内存空间。核心是new与delete,在堆中申请内存,在堆中释放发内存,可以通过这种方式自由管理指定内存的生死。
应知道几个知识点:(1)怎么new的怎么delete:char* p = new char[20]; delete []p;
char *p = new char; delete p;
(2)可以对空指针进行delete,不会报错;
(3)new失败后,返回的值为空指针,可以用来判断。
(4)使用指针前必须判断该指针是否初始化不为空指针。
指针与数组的关系:
(1)指针大多数况下等价于数组名:
char *p; char str[20]="i love c"; p = str;
p[0] 与str[0] 表示同一个意思:数组str的第0个元素;
(2)数组名是常量,不可自增或自减,指针可自增或自减:
p++(√); str++(×)
(3)对其进行sizeof运算时,sizeof(数组名)为数组的长度,而sizeof(指针)为指针所占内存长度: sizeof(str) 的值为20,而sizeof(p)的值为4或者8(不同系统不一样);
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)