提问人:Swagnik 提问时间:3/12/2022 最后编辑:Vlad from MoscowSwagnik 更新时间:3/12/2022 访问量:36
C语言中结构的数组变量的初始化和声明
Initialization and declaration of array variable of a structure in C
问:
我在尝试编译此代码时遇到错误.......尝试了不同的 IDE
#include<stdio.h>
#include<stdlib.h>
struct car{
int price[5];
}c1;
int main(){
c1.price[5]={10,20,30,40,50};
}
错误:
7 14 D:\CODING\c programs\Struct.c [错误] '{' 标记前的预期表达式
答:
0赞
UnprolificToad
3/12/2022
#1
这是无效的 C。 您只能在定义时静态初始化数组。如下所示:
int price[5] = {10,20,30,40,50};
否则,必须使用下标来初始化数组:
c1.price[0] = 10;
c1.price[1] = 20;
c1.price[2] = 30;
c1.price[3] = 40;
c1.price[4] = 50;
试着阅读《Ritchie & Kernighan 的 C 编程语言》一书,先感受一下这门语言。
0赞
Vlad from Moscow
3/12/2022
#2
在此声明之后
struct car{
int price[5];
}c1;
已创建已定义的对象及其数据成员。c1
所以在这份声明中
c1.price[5]={10,20,30,40,50};
您正在尝试将一个带支撑的列表分配给索引等于 的数组中不存在的元素。5
即使你会写
c1.price = {10,20,30,40,50};
但是,数组没有赋值运算符。
您可以在定义对象时初始化对象的数据成员。例如price
c1
struct car{
int price[5];
}c1 = { .price={10,20,30,40,50} };
否则,要更改数据成员价格的值,您应该使用循环,例如
for ( size_t i = 0; i < sizeof( c1.price ) / sizeof( *c1.price ); i++ )
{
c1.price[i] = ( int )( 10 * ( i + 1 ) );
}
评论
0赞
Swagnik
3/24/2022
谢谢。。。。。。。。。。。。。这解释了很多 😃😃😃
评论