繁体   English   中英

为什么可以将未初始化的变量地址传递给 function 的指针参数

[英]Why it is ok to pass an uninitialized variable address to pointer paramter of a function

假设我们有这样的 C function,

void assign(int* refs)
{
 *refs = 123;
}

并以两种方式调用它

1.

int a;
assign(&a); // a is assigned a value.
int* a;
assign(a);// runtime error

我知道给指向 null 的指针赋值是不行的,因为没有对应的 memory 被分配。

[1]为什么传递未初始化变量的地址效果很好?
[2]a没有被初始化时&a是什么意思。

该值未初始化,但已分配 memory。指针指向 memory,而不是值。

读取未初始化的变量只是一个问题。 获取它的地址很好,因为变量的地址在其生命周期内是固定的。

在您的第一个示例中,您有一个int类型的未初始化变量。 您获取其地址(如上有效)并将其传递给 function ,后者随后取消引用该地址以写入a的值。

在第二个示例中,您有一个int *类型的未初始化变量,但随后您将其传递给 function。 这是无效的,因为变量的值是不确定的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM