C语言学习【19】-静态变量跨函数调用【我懵逼了,谁能给我讲讲】

博客探讨了静态变量在C语言中跨函数调用的疑惑。通过示例代码展示,尽管静态变量在函数执行后理论上应被释放,但实际中仍能通过二重指针在函数外部访问并正确输出。作者对比了一维指针的情况,发现编译错误,并提到不同编译器对此有不同的处理。文章寻求对这种现象的解释。
摘要由CSDN通过智能技术生成

直接上代码

输出结果为:

懵逼的原因:

背景为静态变量当然是不能跨函数调用的啊,因为静态变量的内存在函数执行完就释放了啊,除非这个变量在主函数内。

那么再看上面的程序

f 函数形参为二重指针,这里将 指针变量 p 的地址发送给该函数,然后将 f 函数中的整形变量 i 的地址赋给了 p ,f 函数调用完成后,i 的内存空间也给释放掉了,但是输出 *p 依然能够输出,我很疑惑。

带着这种疑惑我又写了个程序

这里我将 f 函数的形参写成了 一维指针,此时将指针变量传递给形参,编译没有错,输出有错误,结果如下

上网查了一下这个错误

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值