C语言,二维数组和指针

inta[3][4]a[0]是第一个一维数组的数组名和首地址,地址为1000。为什么*(a+0)或*a是与a[0]等效的,它表示一维数组a[0]0号元素的首地址,也为10... int a[3][4]
a[0]是第一个一维数组的数组名和首地址,地址为1000。
为什么 *(a+0)或*a是与a[0]等效的, 它表示一维数组a[0]0 号元素的首地址,也为1000。 *不是 指针运算,取值的吗,这里*(a+0)怎么成地址了呢?
展开
 我来答
方生一般931
2007-03-28
知道答主
回答量:4
采纳率:0%
帮助的人:0
展开全部
有必要对a[i]的性质作进一步说明。a[i]从形式上看是a数组中的第i个元素。如果a是一维数组名,则a[i]代表a数组第i个元素所占的内存单元的内容。a[i]是有物理地址的,是占内存单元的。但如果a是二维数组,则a[i]是代表一维数组名。它只是一个地址(如同一维数组名只是一个指针常量一样。) a,a+i,a[i],*(a+i),*(a+i)+j,a[i]+j都是地址。 *(a[i]+j)和*(*(a+i)+j)是二维数组元素a[i][j]的值。
举例说明一下:
int a[3][4]={…………};
a,*a; 第0行首地址和0行0列元素地址
a[0],*(a+0); 第0行0列元素地址
&a[0],&a[0][0];第0行元素首地址和0行0列元素地址
a[1],a+1; 第1行0列元素地址和1行首地址
&a[1][0],*(a+1)+0; 1列0行元素地址
a[2],*(a+2);2行0列元素地址
&a[2],a+2;第2行元素首地址
a[1][0],*(*(a+1)+0);第1行0列元素的值。
debugger2008
2007-03-28 · 超过21用户采纳过TA的回答
知道答主
回答量:58
采纳率:0%
帮助的人:73.1万
展开全部
我也说两句,你不是不明白 为什么*(a+0)怎么成地址了么?
原因就还是, 这是个二维数组, 如果是一维的话, 那么 *(a+0)肯定就是元素而不是地址了.

这东西没必要抠的太细, 你用二维数组也就是两个for语句了事, 弄的太细反倒晕了, 个人观点, 仅供参考.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我是编程大虾
2007-03-28 · TA获得超过616个赞
知道小有建树答主
回答量:472
采纳率:0%
帮助的人:0
展开全部
a为数组地址,(a+0)表示该数组的第一个变量(也是数组),*表示取值,*(a+0)得到第一个变量(第一个一维数组)的地址,它的地址与数组地址是相同的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
home2001me
2007-03-28 · TA获得超过1072个赞
知道小有建树答主
回答量:993
采纳率:0%
帮助的人:1014万
展开全部
*(a+0)就是取a的值,a的值就是存的a[0][0]地址,也就是a[0],**a就是取 a[0][0]的内容
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式