现在有一个二维数组
int array[2][[3]
int *ptr=array[0]
这里的ptr是指什么呢,array的第一行的第一个数组吗,即array[0][0]吗?
还是指array的第一行呢?那它的地址打印出来又是多少呢
*ptr才是array[0][0],其实二维也是一维,只不过是一维的元素是数组罢了。
ptr是int型指针,由于赋值要两边类型一样。所以后边的数组名array[0]相当于指针常量,指向数组第一个元素,即&array[0][0]。
数组array[0],里面有三个元素,array[0][0],array[0][1],array[0][2]。第一个元素就是array[0][0]。
如果ptr+1,那它就加了1个sizeof(*ptr)自身类型的字节,也就是一个int,会指向array[0][1]。
如果要指向第一行你应该这样赋值int (*ptr)[3]=array。那么array相当于&array[0],里面有三个元素。是个行指针。ptr是一个数组指针,指向一个有3个int元素的数组。
#include<stdio.h>
int main()
{
int a = 10;
int *P1;
int **P2;
P1 = &a;
P2 = &P1;
return 0;
}