int *p=&a[0][0]; 中的*p是什么意思,怎样理解

int *p=&a[0][0];
int (*p)[3]=&a[0][0];
int *p
请问这三行的*p分别是什么意思,用通俗点的比喻讲解下

int *p
定义*p是一个指针变量(指向int型);

int *p=&a[0][0];
这句话的意思是:
定义了一个名p指向int型的指针变量
并初始化 把数组a[0][0]的首地址赋值给指针变量p

int (*p)[3]=&a[0][0];
定义了 指向包含3个一维数组的指针变量
p为指针变量 ;指向包含3个一维数组
p+1表示指向3维数组的第一行的指针
*(p+i)+j表示i行j列元素的地址
*(*(p+i)+j)表示i行j列元素的值

谢谢 希望能帮到你
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-04-05
int *p的含义是指定义p为整型数据的地址指针。
*表示这是一个指针。int 表示指针的数据类型
&a[0][0]表示的是a这个数组第一个元素在内存中的存储地址

int *p=&a[0][0];这段代码会将数组a的第一个元素的内存地址值赋给变量p
假如p的值发生变化,比如p++,执行后,p指针将会指向数组a的第二个元素。
通过*p操作,可以取得p所指地址下的存储内容。如y=*p;
第2个回答  2012-06-08
第一行的*p是定义了一个整形的指针并赋值为&a[0][0]
第二行中的是表示定义了一个数组,数组中的元素存放的是指针,并且给数组的第一个元素赋值&a[0][0]
最后一行是定义了一个整形的指针名为p的指针本回答被提问者采纳
相似回答