函数如何返回变量的地址

 当程序编译链接成功之后,会产生可执行文件,当可执行文件执行的时候,系统将会从磁盘把文件加载到内存,代码加载到代码区,而这时的局部静态变量是加载到的数据区(data区),所以当执行完fun函数之后,虽然fun函数所占用的栈帧回收了,但是局部静态变量生存期并没有影响(静态变量是在系统进入到主函数时就被定义了)。所以最后输出*ip时的结果是10。

同样,定义了全局变量,也是存储在数据区,所以也可以返回。

所以,若要调用函数使用指针,并且想要不受影响,不能把块内(栈帧里)的某个变量的地址赋值给某个指针,并且在退出块之后(或者栈帧被回收之后)再次调用这个指针。也就是说被调用函数的形参传入的指针指向的地址必须是主函数内已定义的变量或者在静态储存区内的变量地址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值