C语言中关于函数的局部变量和地址返回

本文探讨了为什么不能直接返回函数中局部变量的地址,并解释了返回局部变量地址时出现Segmentation Fault的原因。同时,文中也提到了如果返回局部变量本身则不会出现问题。

    1. 函数中的局部变量地址是无法返回的,返回会报出警告


    为何会有这种情况? 我一开始不知道是怎么回事, 然后我就在网上搜索了一下, 发现了一个合理的解释:

    因为想要返回局部变量的地址就必须用一个指向该类型的指针来指向它,例如:

char * segment (char a) {
    retrun &a;
}

该例子中char a 姑且认为是一个局部变量, 返回一个字符的地址,  通过一个指向该地址的指针, 但是问题是该指针在返回的时候, 由于该形式参数会和函数中的非静态局部变量一起释放掉, 就导致了那个指向char的指针指向的东西消失掉了, 于是就给我了一个Segmentation Fault的错误, 这个指针就指向一个无意义的地方, 结果就变得不可预知了


    2.如果函数返回的是函数中的局部变量而非该变量的地址, 那么可以返回, 没有错误


PS:第一次写博客,以后坚持记录所学所得

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值