32060049
2015-10-25 06:56
采纳率: 94.4%
浏览 3.3k
已采纳

C语言二维数组地址问题

最近在自学二维数组,对书上的几个定义不知道怎么理解,求教导~万分感谢!

printf("%d,%d",&a[1]+1,a[1]+1);//前者输出第二行首地址,后者输出第一行第一列元素地址,这是为什么要怎么理解。
书上还有一句定义:&a[i]指向行,而a[i]指向列,不知怎么理解。

再次感谢!!!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • csdnqixiaoxin 2015-10-25 08:03
    已采纳

    你可以对比一维数组来理解,把一行也看成是一个元素,我用语言描述也说不清,就发张手绘图吧
    图片说明

    点赞 评论
  • _H_JY 2015-10-25 07:08

    在a[i]+i中,a[i]指向行,i指向列,比如a[0]+0指向的是第一行第一列的地址;a[1]+1 指向的是第二行第二列的地址

    点赞 评论
  • ysuwood 2015-10-25 07:46
    二维数组a,a是数组地址,指向行;有一个等价关系 a[i]=*(a+i)
    a[i]指向列,&a[i]又指向行。
    
    你可以将*和&理解为相反的操作:
    a指向行,*(a+i)指向列,*(*(a+i)+j)等价于a[i][j];
    &a[i][j]指向列。但是&&a[i][j]是语法错误。
    
    
    
    点赞 评论
  • ysuwood 2015-10-25 07:48
    二维数组a,a是数组地址,指向行;有一个等价关系 a[i]=*(a+i)
    a[i]指向列,&a[i]又指向行。
    
    你可以将*和&理解为相反的操作:
    a指向行,*(a+i)指向列,*(*(a+i)+j)等价于a[i][j];
    &a[i][j]指向列。但是&&a[i][j]是语法错误。
    
    
    
    点赞 评论
  • Leexianke 2015-10-25 08:01

    &是取址,所以取得是指向列的。那不就是行吗?

    点赞 评论

相关推荐 更多相似问题