[英]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.