C 数组下标'[ ]'运算符
C语言是通过数组下标来引用数组的, 我们这样定义一个有十个元素的整型数组:
int arr[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
然后可以通过数组arr的下标对其元素进行引用:
a[0] = a[1]+a[2];
实际上, 数组下标'[ ]'是一种运算符, 程序中用下标法引用数组元素的代码, 最终都被编译器自动转化为指针进行运算, 也就是说, 'a[i]'和'*(a+i)'在编译器看来, 是完全等价的.
由此, 可以理解以下代码:
#include<stdio.h> int main(void) { struct hi { int a; int b; }; struct hi test; test.a=1; test.b=2; printf("%d, %d\n", test.a, test.b); /* 真正写代码时, 请不要这样用: */ printf("%d, %d\n", ((int*)(&test))[0], ((int*)(&test))[1]); return 0; }
打印结果为:
1, 2
1, 2