深入理解c指针_学习笔记_4.0指针和数组

第三章内容:深入理解c指针_学习笔记_3.0指针和函数
https://blog.****.net/haimaer/article/details/81450909
数组是一个很常用的工具:这个需要深入深刻的理解和吃透!!!
1:数组的内部不带有长度信息,若不传递长度,函数就没有标准的方法得到数组的终点。
故在函数处理数组时,大部分情况必须传递数组长度

2:数组是一片连续的同质元素集合。

3:二维数组:
      数据是按照行来存放在内存中,先放第一行,后第二行。。。一直到最后一行,也是一片连续的内存。

深入理解c指针_学习笔记_4.0指针和数组

4:指针和数组的差别
  4.1:实现过程不同
深入理解c指针_学习笔记_4.0指针和数组
  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:如果要传递多维数组,可以像下面这么写
深入理解c指针_学习笔记_4.0指针和数组

7:若定义了指针 int * arr;
在函数中要来用其表示二维数组时,这种做法是错误的:arr [i] [j],因为arr没有被声明为二维数组,但是可以 (arr+i) [j],这样用一个下标写,可以解释为数组的内部偏移量

8:对于二维数组:
        &num[0][0]代表的是一个整数指针
        num是一个整数数组指针

9:多维数组,用到再看吧,这部分很少用到,以目前状态,稍微了解一下,也都看懂了,不敢细看,细看到时候也都忘光光,还得重新来。