結(jié)構(gòu)體變量的引用與賦值
(1).結(jié)構(gòu)體變量的引用
一個(gè)結(jié)構(gòu)體變量由若干成員組成,成員又可稱為結(jié)構(gòu)體分量。對(duì)結(jié)構(gòu)體成員的存取由圓點(diǎn)運(yùn)算符“.”實(shí)現(xiàn)表示結(jié)構(gòu)變量成員的一般形式是:
結(jié)構(gòu)變量名.成員名
例如:
struct
{
char ISBN[13];
char BookName[40];
char Author[20];
double Price;
char Publisher[50];
}Book1,Book2;
Book1.BookName即第一本圖書的書名
Book2.Price即第二本圖書的價(jià)格
如果成員本身又是一個(gè)結(jié)構(gòu)則必須逐級(jí)找到最低級(jí)的成員才能使用。
例如:
struct stu{ /*定義結(jié)構(gòu)*/
char num[6];
char name[10];
char sex;
struct birth{
int year;
int month;
int day;
}birthday;
double score;
}stu1;
該學(xué)生信息結(jié)構(gòu)體如表5-1所示。
表5-1 學(xué)生信息結(jié)構(gòu)體
若要引用該學(xué)生信息結(jié)構(gòu)體變量stu1中的出生年份這一成員,則應(yīng)該寫成:
stu1.birthday.year
結(jié)構(gòu)體變量的成員也可以像同類型的其他變量一樣,進(jìn)行各種運(yùn)算。例如:
stu1.score+10.5
(2).結(jié)構(gòu)體變量的賦值
為結(jié)構(gòu)體變量賦值,可以有以下兩種方法:
ü 在變量說明中賦初值,稱為初始化。其格式如下:
struct<結(jié)構(gòu)體名><結(jié)構(gòu)體變量名>=<初始值表>;
【例5-14】對(duì)結(jié)構(gòu)變量初始化。
#include <stdio.h>
int main()
{
struct stu{ /*定義結(jié)構(gòu)*/
char num[6];
char name[10];
char sex;
double score;
}stu2,stu1={"14012","Rose",'M',78.5};
stu2=stu1;
printf("Number=%s\nName=%s\n",stu2.num,stu2.name);
printf("Sex=%c\nScore=%.2f\n",stu2.sex,stu2.score);
return 0;
}
程序運(yùn)行結(jié)果:
Number=14012
Name=Rose
Sex=M
Score=78.500000
本例中,stu2、stu1均被定義為外部結(jié)構(gòu)變量,并對(duì)stu1作了初始化賦值。在main函數(shù)中,把stu1的值整體賦予stu2,然后用兩個(gè)cout語句輸出stu2各成員的值。
ü 用賦值語句或輸入語句為結(jié)構(gòu)體成員賦值,例如:
【例5-15】給結(jié)構(gòu)變量賦值并輸出其值
#include"stdio.h"
#include<string.h>
struct stu
{ /*定義結(jié)構(gòu)*/
char num[6];
char name[10];
char sex;
float score;
}stu1,stu2;
int main()
{
strcpy(stu1.num,"14102");
strcpy(stu1.name,"Rose");
printf("input sex and score:\n");
scanf("%c %f",&stu1.sex,&stu1.score);
stu2=stu1;
printf("Number=%s\nName=%s\n",stu2.num,stu2.name);
printf("Sex=%c\nScore=%.2f\n",stu2.sex,stu2.score);
return 0;
}
本程序中用賦值語句給num和name兩個(gè)成員賦值,用scanf函數(shù)動(dòng)態(tài)地輸入sex和score成員值,然后把stu1的所有成員的值整體賦予stu2。最后分別輸出stu2的各個(gè)成員值。本例表示了結(jié)構(gòu)變量的賦值、輸入和輸出的方法。要注意的是,無論采用哪種方法為結(jié)構(gòu)體成員賦值,都必須保證類型一致。
程序運(yùn)行結(jié)果:
input sex and score:
M 80.5↙
Number=14102
Name=Rose
Sex=M
Score=80.500000
評(píng)論列表