在二维数组中*a,a,a[0] ,a[0][0] ,a[1] ,&a[1] 的区别
1个回答
展开全部
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的不同.
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的不同.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |