深入理解c指针_学习笔记_4.0指针和数组
第三章内容:深入理解c指针_学习笔记_3.0指针和函数
https://blog.****.net/haimaer/article/details/81450909
数组是一个很常用的工具:这个需要深入深刻的理解和吃透!!!
1:数组的内部不带有长度信息,若不传递长度,函数就没有标准的方法得到数组的终点。
故在函数处理数组时,大部分情况必须传递数组长度。
2:数组是一片连续的同质元素集合。
3:二维数组:
数据是按照行来存放在内存中,先放第一行,后第二行。。。一直到最后一行,也是一片连续的内存。
4:指针和数组的差别
4.1:实现过程不同
4.2:sizeof() 对数组和同一个数组的指针操作也是不同,对vector操作,返回20(4*5),而对pv操作,会返回4,也就是指针的长度。
4.3:指针pv是可以重新赋值或修改内容的,而vector只能被调用,而无法被修改。
5:int * num[5]定义一个元素是整数指针的指针数组,数组有5个元素,每个元素都是(int*)类型的指针
int (* num)[5]定义了一个数组指针,指向一个二维数组,元素的类型是int,一行有5个元素,多少行,不确定。
6:如果要传递多维数组,可以像下面这么写
7:若定义了指针 int * arr;
在函数中要来用其表示二维数组时,这种做法是错误的:arr [i] [j],因为arr没有被声明为二维数组,但是可以 (arr+i) [j],这样用一个下标写,可以解释为数组的内部偏移量
8:对于二维数组:
&num[0][0]代表的是一个整数指针
num是一个整数数组指针
9:多维数组,用到再看吧,这部分很少用到,以目前状态,稍微了解一下,也都看懂了,不敢细看,细看到时候也都忘光光,还得重新来。