您的位置:

c语言给结构体赋初值,C语言赋初值

本文目录一览:

求助一个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}};

====

[原创回答团]