首页
下载应用
提交文章
关于我们
🔥 热搜 🔥
1
上海
2
习近平
3
新疆
4
鄂州父女瓜
5
乌鲁木齐
6
疫情
7
H工口小学生赛高
8
习明泽
9
芊川一笑图包
10
印尼排华
分类
社会
娱乐
国际
人权
科技
经济
其它
首页
下载应用
提交文章
关于我们
🔥
热搜
🔥
1
百度
2
今日热点
3
微信公众平台
4
贴吧
5
opgg
6
dnf私服
7
百度贴吧
8
知乎
9
dnf公益服
10
百度傻逼
分类
社会
娱乐
国际
人权
科技
经济
其它
”FAN某”的离婚财产分割判决书(全文)
”FAN某”的离婚财产分割判决书(全文)
哈里斯女粉搞4B运动、毒杀丈夫,回旋镖能否让美国“血流成河”
这把绝对高端局,只有中国人才懂
许纪霖:珠海驾车撞人事件的背后,弦绷得太紧了,要给人们以松弛感 | 二湘空间
生成图片,分享到微信朋友圈
查看原文
其他
你见过数组的这种骚操作吗?
编程珠玑
2022-09-10
来源:
公众号【编程珠玑】
作者:
守望先生
ID:
shouwangxiansheng
看到朋友圈对一段代码感到很惊奇,这里也分享一下:
代码如下:
#include<stdio.h>
int main(void)
{
int a[] = {1,2,3,4};
int len = sizeof(a)/sizeof(a[0]);
int i =0;
for(;i < len;i++)
{
printf("%d\n",i[a]);
}
return 0;
}
注意看printf那一行,发现什么了没有?
竟然有i[a]这样的操作?
然后你运行一下还会发现,结果完全正常。
如何理解呢?
首先问一个问题,你是如何理解a[1]的?
是不是对等的间接表达式是这样的:
*(a + 1)
既然如此,那么它写成这样是不是也可以?
*(1+a)
再转换回去:
1[a]
由于这样的写法对于编译器来说是没有差别的,除了优先级以外,它的操作和间接访问过程是类似的。
以上内容来自《C和指针》8.1.2,后台回复可获取电子版,仅供学习交流。
关注公众号【编程珠玑】,获取更多Linux/C/C++/算法/计算机基础/工具等原创技术文章。
后台免费获取经典电子书和视频资源
您可能也对以下帖子感兴趣
{{{title}}}
文章有问题?点此查看未经处理的缓存