百思不得其解的问题,求助!
在书上看到这样两个等式:
1.表达式1[表达式2]=表达式2[表达式1](a[i]=i[a])
2.*[(表达式1)+(表达式2)]=表达式1[表达式2](*(a+i)=a[i])
书上也没怎么解释(本人在校初学C,想不明白),最后编个程序试了一下还真的是这样:
[code=C/C++][/code]
#include <stdio.h>
#include<stdlib.h>
int main(void)
{
int i[1]={7};
printf("i[0]=%d \n0[i]=%d\n",i[0],0[i]);
system("PAUSE");
return 0;
}
[code=C/C++][/code]
i[0]=7
0[i]=7
求大牛指点,原理是什么?能仔细分析一下吗?
[解决办法]
C语言在解析数组的时候,本质上是把它当作指针来寻址,数组名相当于常量指针,下标相当于偏移,所以:
a[i] = *(a + i) = *( i + a) = i[a]
[解决办法]
引用:
"123"[1] == *("123" + 1) == *( 1 + "123") == 1["123"]