所以我在全局部分有两个结构
typedef struct stack_1
{
short ctr;
} stack_1;
typedef struct stack_2
{
struct stack_1 *s1;
} stack_2;
然后在我做的代码中
struct stack_2 *x;
我的x初始化为什么? 0或空。先感谢您。
答案 0 :(得分:10)
如果您的声明在任何函数之外或使用static
关键字(更准确地说,具有静态存储持续时间),则x的初始值为空指针(可以作为0
使用或者NULL
)。如果它在函数内部(更确切地说,具有自动存储持续时间),则其初始值为垃圾。
答案 1 :(得分:0)
在局部变量声明之后
struct stack_2 *x;
x
是一个未初始化的(悬空)指针。它有垃圾值,指向内存中的一些随机位置。取消引用它将是未定义的行为,即您应该不惜一切代价避免的事情。
答案 2 :(得分:0)
x
会保留垃圾值x
保持0 答案 3 :(得分:0)
由于你有typedef
'结构名称,你应该按如下方式实例化它:
stack_2 *x;
x
的值取决于上述代码的位置。如果它是全局x
将被设置为0.如果它是函数x
中的局部变量将是未初始化的。