#include <stdio.h>
struct virus
{
char signature[25];
int size;
}v[2];
int main(void) {
static v[0] = {"Yankee",1813};
static v[1] = {"Doodle",2813};
int i;
for(i=0;i<=1;i++)
{
printf("%s %d\n",v[i].signature,v[i].size);
}
return 0;
}
我在这段 C 代码中遇到编译器错误。
Error: Declaration syntax in function
main()
我猜测 v[2]
中存在一些错误,因为它与外部类关联,而 v[0]
和 v[ 1]
与静态类相关联。
但是,我不确定这是唯一的原因还是其他原因?
编辑:我通过删除错误的语法来编辑代码。
最佳答案
v[2]
的声明没有错误,问题在后面。
你写了
static struct v[0] = {"Yankee",1813};
它尝试 定义大小为 0 的数组,默认情况下 C 标准不允许这样做。
也就是说,语法也错得离谱。你没有正确的类型,记住,struct
本身不是类型,它是关键字。 struct <something>
实际上是一个类型。
那么,从逻辑的角度来看,您可能根本不需要一个新变量。如果您想使用 v
中的数组元素,只需使用变量名即可。有点像
#include <stdio.h>
struct virus
{
char signature[25];
int size;
}v[2] = { {"Yankee",1813}, {"Doodle",2813}}; //get it initialized, job done
int main(void) {
int i;
for(i=0;i<=1;i++)
{
printf("%s %d\n",v[i].signature,v[i].size);
}
return 0;
}
将以更好的方式完成工作,恕我直言。
编辑:
如果您对分配单个元素感兴趣(不是 初始化),那么,您不能为此目的使用大括号括起来的初始化器,它并不意味着是赋值的 RHS 操作数.您需要使用 compound literal 为此目的,像
v[0] = (struct virus){"Yankee",1813};
v[1] = (struct virus){"Doodle",2813};
也会完成这项工作。
关于c - 如何正确地为数组(结构类型)元素赋值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42572117/