定义一个数组:
int a[5] = {1,2,3,4,5};
访问元素5可以通过以下形式的代码:
a[4]; /*下标运算符,可理解为数组的访问形式*/
*(a+4); /*指针的加法运算和解引用,可理解为指针的引用形式*/
实际上这两种访问形式是等价的,即X[m]=*(X+m)
这里不妨再拓展一下,根据加法交换律,交换两个加数的位置不会影响结果,那么*(X+m) = *(m+X) = m[X]
是否成立呢?
#include <stdio.h>
int main()
{
int a[5] = {1,2,3,4,5};
printf("a[4] = %d\n", 4[a]);
return;
}
答案是肯定的,编译没有任何error和warning,结果正常输出
a[4] = 5
标签:int,C语言,访问,数组名,理解,指针
From: https://www.cnblogs.com/lucky-glc/p/17866766.html