asuerhao's Blog

如果有什么做的不到的地方请尽管留言, 我会改进的 : )

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