本文目录一览:
求助一个C语言结构体数组赋初值的问题
typedef struct _test {
int id;
char name[20];
int level;
int stock;
double price;
int d;
} Test;
对结构体赋值,一般是顺序赋值,或者指定赋值
比如
Test test[] = {
{1, "abc", 1, 2, 1.2, 3},//对应id, name, level, stock, price, d
{.id = 2, .level=3, price=4.2, .stock=2},//这个就是指定赋值,点后面接的是结构体成员名
};
C语言结构体怎么赋值?怎么初始化?给个最简单的例子~
strcut a
{
int m;
int n;
}
strcut a b,c;
直接赋值 b=c;
通过 . 赋值 b.m=1 ; b.n=2;
声明时赋值 strcut a b={1,2};
c语言结构体初始化赋值
初始化的时候stu1前面少了struct student(表示结构体类型),加上之后这样初始化就行了。
就相对整型初始化时,必须int x=。。。。,不能直接x=。。。。,事实上就是语法上的一个小细节错误。
C语言结构体赋值
首先这样编译会出错。
struct
{
char ch;
int pri;
}
定义结构体类型,后面没有跟分号,说明后面是该类型的变量列表,之后遇到Pri接下来的空格后面跟的lpri编译器就不知道要干什么了。
如果用struct
{
char ch;
int pri;
};,还是出错,因为之后的Pri没有声明或定义。
如果用struct Pri
{
char ch;
int pri;
};,纯C的话不行,Pri是结构体名而不是类型名,会编译出错。C++下会把Pri当作struct Pri,不会出错。
可以这么写:
typedef struct
{
char ch;
int pri;
}Pri;
Pri lpri[]={{'=',0},{'(',1},{'*',5},{'/',5},{'+',3},{'-',3},{')',6}};
Pri rpri[]={{'=',0},{'(',6},{'*',4},{'/',4},{'+',2},{'-',2},{')',1}};
最后两行也可以这样写:
Pri lpri[]={{'=',0},{'(',1},{'*',5},{'/',5},{'+',3},{'-',3},{')',6}},
rpri[]={{'=',0},{'(',6},{'*',4},{'/',4},{'+',2},{'-',2},{')',1}};
注意倒数第二行是分号还是逗号会影响初始化列表的语义。
(顺便,这个不是赋值。)
话说回来,一开始的写法去掉Pri是正确的(只是定义之后无法访问该类型,一般不推荐):
struct
{
char ch;
int pri;
}
lpri[]={{'=',0},{'(',1},{'*',5},{'/',5},{'+',3},{'-',3},{')',6}},
rpri[]={{'=',0},{'(',6},{'*',4},{'/',4},{'+',2},{'-',2},{')',1}};
====
[原创回答团]