我在GCC编译器中使用代码块。在下面的代码中,编译器在返回本地引用时发出警告,但在返回本地指针时没有发出警告,尽管两者是同一回事。为什么?
我知道这些变量是局部的,一旦控制从函数返回,它们就会被销毁。取消引用这些将导致未定义的行为。
int *check(int j)
{
int *q;
q= &j;
return q; // No warning
//return &j; // Warning
}
最佳答案
首先,因为警告是可选的。
第二,这个代码
int *q
...
return q;
不直接返回局部变量的地址。您编写了显式代码,使指针指向函数返回时变为无效的地址。不能指望任何编译器能把你从中解救出来。
关于c - 编译器不会在返回本地指针时发出警告,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38357775/