int a[4][5], (*p)[5]=a;

inta[4][5],(*p)[5]=a;里面的(*p)是什么东西?... int a[4][5], (*p)[5]=a;里面的(*p)是什么东西? 展开
 我来答
marilynbkun
2011-11-20 · TA获得超过756个赞
知道小有建树答主
回答量:328
采纳率:0%
帮助的人:237万
展开全部
int (*p)[5]; //p是一个指针,它指向一个长度为5的一维数组
其内存分部为|__|__|__|__|__|
^ (此处为p起始位置)
int a[4][5]; //a是一个二维数组。事实上,一个数组的数组名可以理解(注意,是理解)为指向该数组首地址的指针
其内存分部为(|__|__|__|__|__|)(|__|__|__|__|__|)(|__|__|__|__|__|)(|__|__|__|__|__|)
^ (此处为a起始位置)
既然 p = a,且p指向一个长度为5的数组,则(*p)[5] = a,表示二维数组a第一行
习惯上把二维数组成为行和列,实际上还是连续的内存地址,只不过便于寻址加一个标识而已
cang_feng
2011-11-20 · TA获得超过296个赞
知道答主
回答量:157
采纳率:100%
帮助的人:202万
展开全部
int (*p)[5] 定义了一个指针变量p ,它指向一个整型数组,该数组有5个元素。
那么p=a,就使得p指向了二维数组a的第一行的首元素。

不明白的话,可以看看书或者继续问我。
追问
不明白,书更看不明白
*p是个指针的量,指向a的话,那*p=4?
追答
int *p,   * 用来说明p是个指针变量(值是一个地址);而数组名实际上是该数组的首地址,
所以 p = a; 就把数组a的首地址(即&a[0][0])存到p里面了。这样通过p就可以间接访问数组a了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
大觉得就是我
2011-11-20 · 超过19用户采纳过TA的回答
知道答主
回答量:34
采纳率:0%
帮助的人:50.4万
展开全部
你p是怎么定义的?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式