|
5鱼币
本帖最后由 fishshuke 于 2017-10-27 11:20 编辑
最近遇到一种非主流数组的表达方式,之前遇到一回所以我认得。但是,问了不少学习C语言的朋友们。大家普遍表示还有这种操作?!
特来咱们论坛请高手帮忙解答,这是为什么?
- #include"stdio.h"
- int main()
- {
- int a[6]={0,1,2,3,4,5}
- printf("%d", a[5]);
- printf("%d", 5[a]);
-
- return 0;
- }
复制代码
结果显而易见是a[5]=5[a]
请鱼油们解释这是为什么?
我觉得是这样的:
数组的表示在c语言中只是一种语法糖,其在编译中会被翻译为指针的形式
所以 a[5] == *(a + 5)
而 5[a] == *(5 + a)
两种形式都相当于对a指向的地址平移了5个单位(这里,每个单位为一个int)
|
最佳答案
查看完整内容
我觉得是这样的:
数组的表示在c语言中只是一种语法糖,其在编译中会被翻译为指针的形式
所以 a[5] == *(a + 5)
而 5[a] == *(5 + a)
两种形式都相当于对a指向的地址平移了5个单位(这里,每个单位为一个int)
|