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

新手上路,请多包涵

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

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

阅读 1.8k
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]# 

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