C语言数组中,数组名在中括号中(即 [array])是什么意思?

#include <stdio.h>

int main()
{	
	int array[3]= { 1, 2, 3 };
	
	printf("%d
", 1[array]);  // 2,注意 printf("%d
", [array]);将报错
	printf("%d
", -1[array]);  // -2
	
	return 0;  
}

输出:

分析:

因为对于数组,1[array] == array[1]

同理,对于二维数组:

#include <stdio.h>

int main()
{   
    int array[3][3] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    printf("%d
", array[1][-2]); // 2
    printf("%d
", (-1)[array][5]);  // 3
    printf("%d
", -1[array][5]);  // -9

    return 0;  
}

输出:

分析:

对于二维数组 array[M][N],元素array[i][j]的地址是(*arr) + i * N + j, 值是 * ((*arr) + i * N + j);(-1)[array][5])就是array[-1][5],即 * ((*array) + (-1)* 3 + 5) 等于* ((*array) + 2)

参考链接:https://stackoverflow.com/questions/381542/with-arrays-why-is-it-the-case-that-a5-5a

原文地址:https://www.cnblogs.com/a3192048/p/12241258.html