C语言进修教程第七章-布局与连系(2)
在ANSI C中除了答允具有沟通范例的布局变量彼此赋值以外, 一般对布局变量的利用,包罗赋值、输入、输出、 运算等都是通过布局变量的成员来实现的。
暗示布局变量成员的一般形式是: 布局变量名.成员名 譬喻:boy1.num 即第一小我私家的学号 boy2.sex 即第二小我私家的性别 假如成员自己又是一个布局则必需逐级找到最初级的成员才气利用。譬喻:boy1.birthday.month 即第一小我私家出生的月份成员可以在措施中单独利用,与普通变量完全沟通。
布局变量的赋值
前面已经先容,布局变量的赋值就是给各成员赋值。 可用输入语句或赋值语句来完成。
[例7.1]给布局变量赋值并输出其值。
main(){
struct stu
{
int num;
char *name;
char sex;
float score;
} boy1,boy2;
boy1.num=102;
boy1.name="Zhang ping";
printf("input sex and score\n");
scanf("%c %f",&boy1.sex,&boy1.score);
boy2=boy1;
printf("Number=%d\nName=%s\n",boy2.num,boy2.name);
printf("Sex=%c\nScore=%f\n",boy2.sex,boy2.score);
}
本措施顶用赋值语句给num和name两个成员赋值,name是一个字符串指针变量。用scanf函数动态地输入sex和score成员值,然后把boy1的所有成员的值整体赋予boy2。最后别离输出boy2 的各个成员值。本例暗示了布局变量的赋值、输入和输出的要领。
布局变量的初始化
假如布局变量是全局变量或为静态变量, 则可对它作初始化赋值。对局部或自动布局变量不能作初始化赋值。
[例7.2]外部布局变量初始化。
struct stu /*界说布局*/
{
int num;
char *name;
char sex;
float score;
} boy2,boy1={102,"Zhang ping",’M’,78.5};
main()
{
boy2=boy1;
printf("Number=%d\nName=%s\n",boy2.num,boy2.name);
printf("Sex=%c\nScore=%f\n",boy2.sex,boy2.score);
}
struct stu
{
int num;
char *name;
char sex;
float score;
}boy2,boy1={102,"Zhang ping",’M’,78.5};
main()
{
boy2=boy1;
……
}
本例中,boy2,boy1均被界说为外部布局变量,并对boy1作了初始化赋值。在main函数中,把boy1的值整体赋予boy2, 然后用两个printf语句输出boy2各成员的值。
[例7.3]静态布局变量初始化。
main()
{
static struct stu /*界说静态布局变量*/
{
int num;
char *name;
char sex;
float score;
}boy2,boy1={102,"Zhang ping",’M’,78.5};
boy2=boy1;
printf("Number=%d\nName=%s\n",boy2.num,boy2.name);
printf("Sex=%c\nScore=%f\n",boy2.sex,boy2.score);
}
static struct stu
{
int num;
char *name;
char sex;
float score;
}boy2,boy1={102,"Zhang ping",’M’,78.5};
本例是把boy1,boy2都界说为静态局部的布局变量, 同样可以作初始化赋值。