我正在使用 GCC 编译器的代码块。在下面的代码中,编译器在返回本地引用时发出警告,但在返回本地指针时没有发出警告,尽管两者是相同的。为什么 ?
我知道这些变量是本地变量,一旦控制权从函数返回就会被销毁。取消引用这些将导致未定义的行为。
int *check(int j)
{
int *q;
q= &j;
return q; // No warning
//return &j; // Warning
}
首先,因为警告是可选的。
二、这段代码
int *q
...
return q;
不直接返回局部变量的地址。您编写了显式代码,使指针指向一个地址,该地址在函数返回时变得无效。没有编译器可以帮助你避免这种情况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)