int a[ ] = {1, 2, 3, 4, 0}; //定义了一个数组,这个数组有5个元素,每个元素是一个 int 类型变量
这里的地址是相同的,是相同的意味着数组的地址和 0 号元素的地址是一样的
结论:
数值上相同但是意义上不同,一个是数组整体的地址,一个是元素个体的地址,虽然数值相同但是意义不同
除此之外类型也不同
int (*) [5]
(*) ------ 这里描述的肯定是一个指针类型
具体什么样的指针类型呐 ?指针类型有很多很多,这里的指针类型具体是哪一种呐?
看 int , [5] 这 2 个, 我们就清楚了,这个指针类型用于指向数组 指向什么样子的数组?
int [5], 由5个元素,每个元素是整型变量的数组
这个指针的名字为 pName
类型是 : int (*)[5];
&a 数组地址
用数组地址来初始化 pName
pa 这个指针 就指向了上面定义的数组a[ ]
int* p = a; 定义一个指针 p ,并且指向这个数组的第0 号元素
所以 &a 和 a 不同
在做赋值的时候,在做初始化的时候,类型必须一致,特别对于指针来说,如果类型不一致就不能相互的赋值
while 里面打印 p 指向的整型数
定义一个指向数组的指针
int (*pa) [5]; 这个数组长什么样子,由5个元素,每个元素是一个整型变量 ,这样一个指向数组的指针就定义好了
警告 : 赋值符号左右两边的指针类型不兼容
为什么打印 1,因为死循环了,当前p的值指向了 1,