c - 如何在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
解决方案
在 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;
}
推荐阅读
- python - 训练模型后的预测值问题
- javascript - 如何使用 NodeJS 在 Windows 和 Linux 机器上读取同一项目中的绝对路径?
- c++ - 如何将字符显示为显示板上的字符串?
- c++ - Intellisense 未在 Visual Studio 2019 中显示 cmake 项目的语法错误
- node.js - 异步使用 writeFile 时,fileSystem 模块出现错误
- c# - 创建精灵并设置其颜色的函数
- java - 如何在 android 中使用 Print Document Adapter 打印布局
- html - 视口与 html 正文样式结合使用
- database - 使用 kafka 无法将 neo4j-stream 的节点模式列入白名单
- android - 如何强制停止 Flutter 中的任何应用程序?