【发布时间】:2016-07-25 21:11:43
【问题描述】:
我有以下代码:
void func(uint8 *var) {
uint8 tempvar;
if (var)
var = &tempvar;
*var = 0;
}
我使用以下方法调用函数:
func(NULL);
代码在“*var = 0;”行给出了分段错误因为 var 仍然指向内存地址 0x0。我不明白为什么我对临时变量的赋值不起作用!
【问题讨论】:
-
“为什么我对临时变量的赋值不起作用”。好吧,它不起作用,因为如果
var最初为空,您明确要求程序跳过该分配。您的if条件正是如此。 -
@πάνταῥεῖ - 好吧,它是范围内的局部变量,我只在范围内使用它。该参数是单个指针,地址的更改不会修改调用者变量。因此,没有在其范围之外访问的变量。
-
已经知道了...
标签: c pointers segmentation-fault