结构体变量的引用与赋值

结构体变量的引用与赋值

(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