1.结构变量的定义
声明了结构类型后,还需要定义结构变量,以便在程序中引用它。
结构变量和其他变量一样,必须先定义后使用
(1)先定义结构类型,再定义结构变量
struct books
{ int bno;
char bname[20],field[10],author[10],
publisher[30];
float price;
};
struct books book1,book2;
(2)定义结构类型的同时定义结构变量
struct books
{ int bno;
char name[20],field[10],author[10],publisher[30];
float price;
}book1,book2;
(3)直接定义结构变量
struct
{ int bno;
char bname[20],field[10];
float price;
}book1,book2;
注意:方式(3)中没有给出结构名,在此定义语句后面无法再定义这个类型的其他结构变量。
2.结构变量的初始化
(1)结构变量在定义的同时也可以进行初始化。
(2)结构变量初始化的一般形式是在定义变量的后面加上
“
={
初值表列
};
”
。
#include<stdio.h>
int main()
{ struct books /*结构类型*/
{ int bno;
char bname[20],field[10],author[10],publisher[30];
float price;
};
struct books bk1={ /*初始化*/
1001,"c programming","computer","xuwei","renminyoudianpress",39.0
};
printf("bno=%d\nbname=%s\nfield=%s\n",bk1.bno,bk1.bname,bk1.field);
printf("author=%s\n",bk1.author);
printf("publisher=%s\nprice=%f\n",bk1.publisher,bk1.price);
return 0;
}
注意:
(1)对结构变量初始化时,需要按照其成员出现的顺序对每个成员依次赋值,不能跳过前面的成员给后面的成员赋值,例如下面的用法是错误的。
(上面的代码框里初始化时就可看出一一对应关系)
(2)不能在结构内部给成员赋初值,例如下面的用法是错误的。
struct books
{ int bno=1001;
char bname[20]="c programming";
char field[10]="computer";
char author[10];
char publisher[30];
float price=23;
};