为 main 之外的结构元素赋值
Assigning a value to structure element out side main
我创建了一个包含两个元素的结构,并试图在 main 函数之外为其中一个结构元素赋值。但是我在编译时遇到错误。
#include <stdio.h>
#include <stdlib.h>
struct node{
char a;
int b;
};
struct node sr;
sr.b = 48;
int main(){
printf("Value:%d",sr.b);
return 0;
}
我在声明后赋值。为什么这段代码出错。
错误信息
error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘.’ token
您不能有需要在 main()
之外运行时执行的语句,即在文件范围内。它需要出现在某个块范围内,在一个函数内,以确定 何时 被执行。
但是,您可以使用 initialization 为结构类型变量的成员存储初始值。像
struct node sr = {'Z', 1};
会将 sr.a
初始化为 'Z'
,将 sr.b
初始化为 1
。如果您只对初始化成员 b
感兴趣,您将需要 designated initializers,例如
struct node sr = { .b = 1 };
将以下行放入 main() 函数中。
struct node sr;
sr.b = 48;
为什么?您不能有需要在 main()
之外运行时执行的语句。它需要在块的范围内,例如在函数内部,以便确定何时执行。
我创建了一个包含两个元素的结构,并试图在 main 函数之外为其中一个结构元素赋值。但是我在编译时遇到错误。
#include <stdio.h>
#include <stdlib.h>
struct node{
char a;
int b;
};
struct node sr;
sr.b = 48;
int main(){
printf("Value:%d",sr.b);
return 0;
}
我在声明后赋值。为什么这段代码出错。
错误信息
error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘.’ token
您不能有需要在 main()
之外运行时执行的语句,即在文件范围内。它需要出现在某个块范围内,在一个函数内,以确定 何时 被执行。
但是,您可以使用 initialization 为结构类型变量的成员存储初始值。像
struct node sr = {'Z', 1};
会将 sr.a
初始化为 'Z'
,将 sr.b
初始化为 1
。如果您只对初始化成员 b
感兴趣,您将需要 designated initializers,例如
struct node sr = { .b = 1 };
将以下行放入 main() 函数中。
struct node sr;
sr.b = 48;
为什么?您不能有需要在 main()
之外运行时执行的语句。它需要在块的范围内,例如在函数内部,以便确定何时执行。