为 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() 之外运行时执行的语句。它需要在块的范围内,例如在函数内部,以便确定何时执行。