在二维数组中*a, a,a[0] ,a[0][0] ,a[1] ,&a[1] 的区别

 我来答
winds504
2012-03-22 · TA获得超过374个赞
知道小有建树答主
回答量:283
采纳率:100%
帮助的人:372万
展开全部
1. *a:以a[0][0]为首元素的一维数组。可带一个索引:(*a)[i] 即a[0][i]
2. a:以a[0][0]为首元素的二维数组。可带两个索引:a[i][j]
3. a[0]:同*a
4. a[0][0]:首元素
5. a[1]:以a[1][0]为首元素的一维数组。可带一个索引。
6. &a[1]:以a[1][0]为首元素的二维数组。可带两个索引:(&a[1])[i][j]即a[i+1][j]

要掌握它们的区别,关键是掌握它们各自支持的运算符的不同处理。
对于运算符'+':a[0][0]执行的是数学上的加法;而其余的由于都是指针,执行的都是地址的加法,而且有的加1是指向同一行中的下一列上的元素(如*a、a[0]和a[1]),有的加1是指向同一列中的下一行上的元素(如a和&a[1])。
对于运算符'*':
a[0][0]执行的是数学上的乘法,如a[0][0] * 2;
*a、a[0]和a[1]执行的是取值,如**a + *a[0] + *a[1]
a和&a[1]执行的是由原来的二维数组变为一维数组,也可理解为改变指针的类型,其加1的意义就不同了,如a+1和(*a)+1的不同。
AIR_IT
2012-02-22 · TA获得超过183个赞
知道答主
回答量:277
采纳率:100%
帮助的人:161万
展开全部
比如 int a[2][3];
那么就是如下排布:
第一行:a[0][0] a[0][1] a[0][2]
第二行:a[1][0] a[1][1] a[1][2]
a就是这个数组的开头。
a[0]就是指第一行.
a[0][0]就是指第一个数组中第一行第一个元素(也是数组中最开头的元素)
a[1]就是指第二行。
&a[1]就是指第一行的首地址。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友1ae4cb55f
2012-02-22 · TA获得超过158个赞
知道小有建树答主
回答量:162
采纳率:0%
帮助的人:97.7万
展开全部
比如:定义a[2][2]={0,1,2,3};
那么:*a和a[0]和a都是一样的,都是指向数组第一个元素的指针;a[0][0]代表数组的第一个元素;a[1]是指向数组a[1][0]的指针;&a[1]代表a[1][0]的地址。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
痞孓寶
2012-02-27 · TA获得超过193个赞
知道答主
回答量:119
采纳率:0%
帮助的人:45.7万
展开全部
1. *a中a是指向这个数组的首地址的指针变量
2. a就是这个数组的开头。
3. a[0]就是指第一行.
4. a[0][0]就是指第一个数组中第一行第一个元素
5. a[1]就是指第二行。
6. &a[1]就是指第一行的首地址。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式