int a[4][5], (*p)[5]=a;
3个回答
展开全部
int (*p)[5]; //p是一个指针,它指向一个长度为5的一维数组
其内存分部为|__|__|__|__|__|
^ (此处为p起始位置)
int a[4][5]; //a是一个二维数组。事实上,一个数组的数组名可以理解(注意,是理解)为指向该数组首地址的指针
其内存分部为(|__|__|__|__|__|)(|__|__|__|__|__|)(|__|__|__|__|__|)(|__|__|__|__|__|)
^ (此处为a起始位置)
既然 p = a,且p指向一个长度为5的数组,则(*p)[5] = a,表示二维数组a第一行
习惯上把二维数组成为行和列,实际上还是连续的内存地址,只不过便于寻址加一个标识而已
其内存分部为|__|__|__|__|__|
^ (此处为p起始位置)
int a[4][5]; //a是一个二维数组。事实上,一个数组的数组名可以理解(注意,是理解)为指向该数组首地址的指针
其内存分部为(|__|__|__|__|__|)(|__|__|__|__|__|)(|__|__|__|__|__|)(|__|__|__|__|__|)
^ (此处为a起始位置)
既然 p = a,且p指向一个长度为5的数组,则(*p)[5] = a,表示二维数组a第一行
习惯上把二维数组成为行和列,实际上还是连续的内存地址,只不过便于寻址加一个标识而已
展开全部
int (*p)[5] 定义了一个指针变量p ,它指向一个整型数组,该数组有5个元素。
那么p=a,就使得p指向了二维数组a的第一行的首元素。
不明白的话,可以看看书或者继续问我。
那么p=a,就使得p指向了二维数组a的第一行的首元素。
不明白的话,可以看看书或者继续问我。
追问
不明白,书更看不明白
*p是个指针的量,指向a的话,那*p=4?
追答
int *p, * 用来说明p是个指针变量(值是一个地址);而数组名实际上是该数组的首地址,
所以 p = a; 就把数组a的首地址(即&a[0][0])存到p里面了。这样通过p就可以间接访问数组a了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你p是怎么定义的?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询