如何解决返回局部变量的地址
'''
int* fun(){
int x=5;
int* p=&x;
return p;//problematic part
}
int main(){
int *c=p; //error when int "*c=&x;"
*c=13;
}
'''
当我在主函数中创建一个“整数指针”,然后通过指针 p 将局部变量的地址分配给该“整数指针”,并为该特定地址分配一个新值时,它不会给出任何错误或警告,我认为应该。因为当我尝试通过“&x”返回“int x”的地址,然后尝试更改它的值时,程序按预期崩溃。
为什么当我使用“指针p”时程序没有崩溃???? 编辑:程序应该崩溃了,这是我的问题,而不是编译器给出警告的原因
解决方法
如果您尝试使用 return &x;
直接返回地址,编译器会警告您
这里没有警告你的原因是编译器“不知道”你已经分配了一个局部变量的地址。编译器根本不够聪明。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。