C语言二维数组索引的问题?

新手上路,请多包涵

我有一个二维数组,data[512][512], 现在有下面两种索引,为什么得到的值不一样?有没有比较懂的老哥?

data[1][1]
*(&data[0][0]+513)

阅读 1.7k
2 个回答

你的数组定义和运行环境是什么,我测试了下两个是一样的啊

[root@db /home/clion]# cat main.c
#include <stdio.h>

void main(){
    short data[512][512];
    
    data[1][1] = 111;
    
    printf("data[1][1] is %d.\r\n", data[1][1]);
    printf("*(&data[0][0]+513) is %d.\r\n", *(&data[0][0]+513));

    printf("address1 is %p\r\n", &data[1][1]);
    printf("address2 is %p\r\n", &data[0][0] + 513);
}
[root@db /home/clion]# ./main
data[1][1] is 111.
*(&data[0][0]+513) is 111.
address1 is 0x7ffc0c9ff2a2
address2 is 0x7ffc0c9ff2a2
[root@db /home/clion]# 

这个应该是一样的啊,你完整的处理给一个代码,估计是理解错误,造成使用错误。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进