Kor*_*era 1 c struct initialization variable-assignment
这是我发生的事情的一个例子.第一段代码不起作用.
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.
}
Run Code Online (Sandbox Code Playgroud)
但是,以下代码将起作用.
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.
}
Run Code Online (Sandbox Code Playgroud)
我知道我不能在函数之外调用函数,但我可以在函数之外分配全局变量.这看起来像是一项任务.那么为什么它不起作用呢?
编辑:当我点击"发布"时,我想我意识到了答案.您可以在函数外部的声明中指定值,但前提是它只是声明.这就是答案,不是吗?
当我们写:
data_type variableName = someValue;
Run Code Online (Sandbox Code Playgroud)
这意味着我们首先宣布VARIABLENAME为可变,并且所述类型的DATA_TYPE.随后,正在进行值的赋值,之后立即进行,因为这是分配给variableName的第一个值 ,所以它也将其初始化为someValue.
这是允许的.这是一种特殊类型的功能,即系统功能,称为初始化.
但写作
variableName = someValue;
Run Code Online (Sandbox Code Playgroud)
意味着我们尝试分配 someValue中至VARIABLENAME任何函数的范围之外,并且在初始化的范围之外.
这在功能之外是不可能的.
代码仅在被调用函数内执行,初始化除外,这在初始赋值期间发生.
| 归档时间: |
|
| 查看次数: |
138 次 |
| 最近记录: |