c - 返回局部变量的地址
问题描述
'''
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;
它在这里没有警告你的原因是因为编译器“不知道”你已经分配了局部变量的地址。编译器根本不够聪明。
推荐阅读
- angular - 无法使用 HttpRequest
作为 http 客户端请求中的选项 - php - 访问包含刀片模板中通配符 laravel 子域中的参数
- mysql - 如果类别不是“菜”,我如何从文本框中检查数量是否高于或低于数据库列中的数量?VB.net
- hadoop - Hive:如何处理数据文件中有分隔符的文件?
- c# - C# - 无法访问文件“X”,因为它被另一个进程使用
- reactjs - 带有状态的 React-Native TextInput 无效
- git - Git rebase 仍然显示合并提交
- python - 在 win7 上安装 python 3.7.0 的问题
- python - 在 numpy 中结合两个条件(按列)
- google-api - 如何将 GCP 中连接的打印机报告为在线打印机