数组与指针--多维数组与多重指针使用注意事项

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lishang6257/article/details/78106595

本文概述
1 数组
数组的大小固定不变,不能随意增加元素,但是运行是性能会更好
1.1 初始化
1) 字符数组在初始化的时候应该注意有无空字符
char a[] = {‘1’,’1’,’2’}; //初始化时并无空字符产生
char x[3] = “123”; //error,无存放空字符的空间
2) 数组不允许拷贝或者赋值(编译器拓展除外)

2 指针与数组
1) 这里指的注意的是,指针也是迭代器,具有迭代器一样的用法和结构,需要指出的是尾后指针,数组的尾后存在,且可以被初始化,但是不能被解引用,因为这个指针并不指向数组的任何一个元素
int arr [3] = {1,2,3};
int *a = &a[3]; //初始化一个尾后指针
int *a = arr + 3; //初始化尾后指针
int *a = arr + 5; // error,数组溢出,a未定义
2) 数组名称在大多数情况下可以等同于指向数组手元素的一个指针
3) 与string,vector区别:stl库中下标必须是无符号的整数型,而数组下标不一定
int p = (a+2);
int x = p[-1]; //这个是正确的,为a[0]的值,mdzz

3
1) 在使用strlen()时切记该字符串或者字符数组必须以空字符结尾,否则报错
2) strcat(string,char*)这种方式虽然常用,但是并不安全,因为在估算新串的长度时总是出现偏差
注:应当使用vector或者string尽量减少底层指针的使用

4 多维数组与多重指针
1)这里需要指出的是多维数组是数组的数组
int a[4][3];
int (*ptr)[4] = a;
2)二维数组名并不是二重指针,这是一个特殊的常量指针,也就是上面要用int(*ptr)[4] 的原因

猜你喜欢

转载自blog.csdn.net/lishang6257/article/details/78106595