我正在实现一个队列,我想在其中全局初始化
Q.front = Q.rear = Any value
:
#include <stdio.h>
#include <stdlib.h>
struct Queue
{
int front, rear;
int queue[10] ;
};
struct Queue Q;
Q.front = 0;
Q.rear = 0;
int main()
{
return 0;
}
但我收到此错误:
expected '=', ',', ';', 'asm' or '__attribute__' before '.' token
Q.front = 0;
不是一个简单的初始化器,它是可执行代码;它不能发生在函数之外。 为 Q
使用正确的初始化器。
struct Queue Q = {0, 0};
或使用命名初始化语法(并非在所有编译器中可用,目前仅在 C 中可用):
struct Queue Q = {.front = 0, .rear = 0};
您无法在全局范围内使用
Q.front = 0; Q.rear = 0;
初始化变量。在您的案例中,这些陈述应该位于 main
内。
正如 @Naveen 所说,您不能分配给全局范围内的结构成员。根据 C 的版本,你可以这样做:
struct Queue q = {0,0};
或
struct Queue q = {.front = 0, .rear = 0 };