首页 > 解决方案 > 如何在C中的结构中制作静态变量

问题描述

我想在 C 中创建一个结构,其中一个结构变量具有初始默认值

struct process{
char process_name[2];
int burst_time;
int completion_time;
int turn_around_time;
int waiting_time;
int priority;
int  arrival_time= 0;

};

在上面的结构中,我想让arrival_time=0,但我给了我一个错误

Priority.c:11:19: error: expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ before ‘=’ token

标签: cstaticstructure

解决方案


在 C 中,这是不可能的。您不能在结构本身内初始化结构成员。首先,您需要创建结构类型的实例或变量;只有在那之后你才能初始化一个结构成员。例如:

struct process{
        char process_name[2];
        int burst_time;
        int completion_time;
        int turn_around_time;
        int waiting_time;
        int priority;
        int  arrival_time; /* here you can't initialize */
} process_instance = { .arrival_time  = 0 }; /* first process_instance created then initialize the members */

您可以arrival_time像下面这样访问。

int main(void) {
        printf("%d\'n",process_instance.arrival_time);
        return 0;
}

尽管在C++(不是 C)中,结构几乎是的同义词,并且可以在构造函数中初始化成员。例如:

struct process{
        int  arrival_time; /* member of structure */
        process() : arrival_time(0) {   } /*constructor */
};

int main(void) {
        process obj;
        std::cout<<obj.arrival_time;
        return 0;
}

推荐阅读