指向未初始化变量的指针
Pointer points to uninitialized variable
在下面的程序中,ptr
指向未初始化的变量x
。在打印ptr
之前,我已经将10
赋值给了ptr
并打印了。
#include <stdio.h>
int main()
{
int *ptr;
int x;
ptr = &x;
*ptr = 10;
printf(" x = %d\n", x);
printf(" *ptr = %d\n", *ptr);
}
ptr
和 x
都打印出正确的值。但是,我有疑问,它是定义的行为吗?
据我了解,这是已定义的行为,因为在写入之前不需要初始化内存。
是的,是的。您为 ptr
分配了一个有效值,然后使用间接方式为 x
.
分配了一个有效值
像x
这样的变量的地址和它的值是不同的东西。分配存储后,无论变量中的值如何,取地址总是定义明确的。
是的,因为当您声明 x 时,占位符/内存将可用
给你.
ptr = &x;
*ptr = 10;
代码实际上意味着
x =10
在下面的程序中,ptr
指向未初始化的变量x
。在打印ptr
之前,我已经将10
赋值给了ptr
并打印了。
#include <stdio.h>
int main()
{
int *ptr;
int x;
ptr = &x;
*ptr = 10;
printf(" x = %d\n", x);
printf(" *ptr = %d\n", *ptr);
}
ptr
和 x
都打印出正确的值。但是,我有疑问,它是定义的行为吗?
据我了解,这是已定义的行为,因为在写入之前不需要初始化内存。
是的,是的。您为 ptr
分配了一个有效值,然后使用间接方式为 x
.
像x
这样的变量的地址和它的值是不同的东西。分配存储后,无论变量中的值如何,取地址总是定义明确的。
是的,因为当您声明 x 时,占位符/内存将可用 给你.
ptr = &x;
*ptr = 10;
代码实际上意味着
x =10