結構體變量的引用與賦值

結構體變量的引用與賦值

(1).結構體變量的引用

一個結構體變量由若干成員組成,成員又可稱為結構體分量。對結構體成員的存取由圓點運算符“.”實現表示結構變量成員的一般形式是:

結構變量名.成員名

例如:

struct

{

char ISBN[13];

char BookName[40]

char Author[20];

double Price

char Publisher[50];

}Book1,Book2;

Book1.BookName即第一本圖書的書名

Book2.Price即第二本圖書的價格

如果成員本身又是一個結構則必須逐級找到最低級的成員才能使用。

例如:

struct stu{ /*定義結構*/

char num[6];

char name[10];

char sex;

struct birth{

int year;

int month;

int day;

}birthday;

double  score;

}stu1;

該學生信息結構體如表5-1所示。

表5-1 學生信息結構體

                               

num

name

sex

birthday

score

year

month

day








若要引用該學生信息結構體變量stu1中的出生年份這一成員,則應該寫成:

stu1.birthday.year

結構體變量的成員也可以像同類型的其他變量一樣,進行各種運算。例如:

stu1.score+10.5

(2).結構體變量的賦值

為結構體變量賦值,可以有以下兩種方法:

ü 在變量說明中賦初值,稱為初始化。其格式如下:

struct<結構體名><結構體變量名>=<初始值表>

5-14】對結構變量初始化。


#include <stdio.h>

int  main()

{

struct stu{ /*定義結構*/

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;

}

程序運行結果:

Number=14012

Name=Rose

Sex=M

Score=78.500000

本例中,stu2、stu1均被定義為外部結構變量,并對stu1作了初始化賦值。在main函數中,把stu1的值整體賦予stu2,然后用兩個cout語句輸出stu2各成員的值。

ü 用賦值語句或輸入語句為結構體成員賦值,例如:

5-15給結構變量賦值并輸出其值


#include"stdio.h"

#include<string.h>

struct stu

{ /*定義結構*/

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兩個成員賦值,用scanf函數動態地輸入sex和score成員值,然后把stu1的所有成員的值整體賦予stu2。最后分別輸出stu2的各個成員值。本例表示了結構變量的賦值、輸入和輸出的方法。要注意的是,無論采用哪種方法為結構體成員賦值,都必須保證類型一致。

程序運行結果:

input sex and score

M 80.5

Number=14102

Name=Rose

Sex=M

Score=80.500000