这是我正在发生的事情的一个例子。第一段代码将不起作用。
typedef struct {
char *desc;
unsigned quantity;
} item;
item *inventory[INVENTORY_SIZE];
item thing = { "This is a thing.", 2 };
inventory[0] = &thing; // Fail.
int main(void){
// Code goes here.
}
不过,下面的代码可以工作。
typedef struct {
char *desc;
unsigned quantity;
} item;
item *inventory[INVENTORY_SIZE];
item thing = { "This is a thing.", 2 };
int main(void){
inventory[0] = &thing; // Works.
}
我知道我不能在函数外部调用函数,但我可以在函数外部分配全局变量。这看起来像是一个任务。那么为什么它不起作用呢?
编辑:当我点击“发布”时,我想我意识到了答案。您可以在函数外部的声明中赋值,但前提是它是声明。这就是答案,不是吗?
当我们写:
data_type variableName = someValue;
这意味着我们首先声明变量名是一个变量,并且类型为数据类型。随后,立即完成值的分配,因为这是分配给的第一个值变量名,它也将其初始化为一些值.
这是允许的。这是一种特殊类型的函数,系统函数,称为初始化。
但写作
variableName = someValue;
意味着我们正在尝试分配一些值 to 变量名在任何函数的范围之外,并且在初始化的范围之外。
在函数之外这是不可能的。
代码仅在被调用函数内执行,初始化除外,初始化是在初始赋值期间发生的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)