博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《程序员面试宝典》一个程序
阅读量:6658 次
发布时间:2019-06-25

本文共 677 字,大约阅读时间需要 2 分钟。

#include
void main() { int arr[] = {
6,7,8,9,10}; int *ptr = arr; *(ptr++) += 123; printf("%d\n", *(ptr)); for(int i=0;i<5;i++) printf("%d ",arr[i]); printf("\n"); ptr = arr; *(++ptr) += 123; for(i=0;i<5;i++) printf("%d ",arr[i]); printf("\n"); printf("%d, %d\n", *ptr, *(++ptr)); }

输出:

7129 7 8 9 10129 130 8 9 108, 8

*(ptr++) += 123;其实这一行等价于: *ptr = *ptr + 123; ptr++;

 

 这里有一篇比较专业的解释,对于C语言是从右到左的入栈顺序的,为了满足C语言中的动态参数的特性。C程序栈底为高地址,栈顶为低地址,入栈顺序的确是从右至左的。可到底为什么呢?查了一直些文献得知,参数入栈顺序是和具体编译器实现相关的。比如,Pascal语言中参数就是从左到右入栈的,有些语言中还可以通过修饰符进行指定,如Visual C++.即然两种方式都可以。

 

转载于:https://www.cnblogs.com/XDJjy/p/3895675.html

你可能感兴趣的文章
入门级----黑盒测试、白盒测试、手工测试、自动化测试、探索性测试、单元测试、性能测试、数据库性能、压力测试、安全性测试、SQL注入、缓冲区溢出、环境测试...
查看>>
four rules for embracing a working team from home culture
查看>>
android 混淆配置
查看>>
ubuntu16.04安装mysql5.6
查看>>
在博客园学习成长
查看>>
前后端协调处理checkbox
查看>>
Code signing is required for product type 'Application' in SDK 'iOS 11.4'
查看>>
三月小结~
查看>>
使用配置 API配置注入(Container stand-alone API)
查看>>
OFBiz实战系列
查看>>
d11
查看>>
图片的copy,从一个目录复制到另一个目录
查看>>
thinkphp分页显示
查看>>
PHP图像操作:3D图、缩放、旋转、裁剪、添加水印(二)
查看>>
mysql
查看>>
给SharePoint中的User Profile添加属性需要注意的地方
查看>>
二维数组中的查找
查看>>
GitHub Desktop for Win 安装不上
查看>>
SpringMVC中使用Interceptor拦截器
查看>>
20135220谈愈敏Linux_总结
查看>>