【发布时间】:2021-09-26 11:46:09
【问题描述】:
struct ttype {
int arity;
char* items[MAX_ARITY];
};
typedef struct ttype* ntuple;
int main() {
ntuple obj;
put(0, "zubair", obj);
}
在编译期间,它给了我错误,未初始化的局部变量 'obj' 使用了。
【问题讨论】:
-
"错误提示我使用了未初始化的局部变量 'obj'"。局部变量不会自动初始化为任何东西。你永远不会设置
obj,所以它不会被初始化并且可以包含任何垃圾值。这正是编译器告诉你的。 -
是的,但如果我写了 obj->arity = 0;比出现同样的错误。
-
obj->arity正在取消引用obj。obj未初始化。所以这没有任何改变。编译器消息仍然适用。 -
您不应为此使用
typedef。只需使用struct ttype *作为类型,不要对自己隐藏信息。 -
试着解释一下
obj指向的内存。