int *fun() { int a; return &a; },这个错在哪了?
答案:2 悬赏:80 手机版
解决时间 2021-11-27 09:28
- 提问者网友:谁的错
- 2021-11-27 04:26
int *fun() { int a; return &a; },这个错在哪了?
最佳答案
- 五星知识达人网友:忘川信使
- 2021-11-27 05:06
a是在函数里面定义的,它不是一个指针。我们知道,当定义一个变量的时候,操作系统是会为我们分配内存空间的。这里int a;在现在的绝大多数编译器中,int是占4个字节的,所以操作系统会为我们分配4个字节的内存空间。由于这里的a是一个局部变量,操作系统在给它分配空间的时候是在该程序所占空间的栈里面分配的。栈里面的数据有个特点,那就是后入先出。函数在调用的时候在栈中分配空间,函数返回的时候,该空间就被释放了。所以这里虽然返回了a的地址,但是函数返回后a的空间已经没有了。这时我们就不知道这个地址到底指向哪里了。所以这样写是错的。
全部回答
- 1楼网友:大漠
- 2021-11-27 05:33
int *fun() { int a; return &a; } //这个a是局部变量,函数结束变量销毁。,你返回指针没有用的,,
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯