关于数组的成员引用方式:
比如一个int arr[10] = {0,1,2,3,4,5,6,7,8,9};
如何要引用下标为4的成员
我们只需要 arr[4] 即可,这是传统的方式
如果写成4[arr]会如何呢,就是把下标和数组名的位置换一下
#include <stdio.h>
int main(int argc, char *argv[])
{
int arr[10] = {0,1,2,3,4,5,6,7,8,9};
printf("4[arr] = %d\n", 4[arr]);
printf("arr[4] = %d\n", arr[4]);
printf("\n\n");
if(4[arr] == arr[4])
{
printf("4[arr] == arr[4]\n\n");
}
if(0[arr] == arr[0])
{
printf("0[arr] == arr[0]\n\n");
}
return 0;
}
运行后可以发现效果是一样的
没错,4[arr]跟arr[4] 是一样的。
为什么呢?
我们换一种数组成员引用的方式,就很好理解了
arr[4] 可以写成 *(arr+4)
4[arr] 可以写成 *(4+arr) , 也就是 *(arr+4)
所以arr[4] 是等于4[arr]的
#include <stdio.h>
int main(int argc, char *argv[])
{
int arr[10] = {0,1,2,3,4,5,6,7,8,9};
printf("4[arr] = %d\n", 4[arr]);
printf("arr[4] = %d\n", arr[4]);
printf("\n\n");
if(*(4+arr) == *(arr+4))
{
printf("4[arr] == arr[4]\n\n");
}
if(*(0+arr) == *(arr+0))
{
printf("0[arr] == arr[0]\n\n");
}
return 0;
}
这样理解起来也就不奇怪了,今天的分享就到这里,小弟若有疏漏欢迎指正。