定义了一个结构体变量后,就可以对它进行赋值、输入、输出、计算等操作。
(1)对结构体变量的输入操作
不可以用scanf()函数对一个结构体变量整体进行输入操作,对于结构体变量的输入必须通过引用其各成员来进行。
对于结构体变量成员的引用形式为:
结构体变量.成员名
例如:
struct date
{
int year;
int month;
int day;
}dl;
scanf("%d%d%d",&d1.year,&dl.month,&dl.day);
为一个date型结构体变量d1输入各个成员的值。
如果一个成员类型为字符数组的形式,在输入时可以不用加地址符。其实每个成员的操作等价于同等地位的普通变量。例如,对一个student型变量的各成员输入数据:
struct student stul; /*定义student结构体型变量stul*/
scanf("%d",&stul.sno); /*输入stul的sno成员的数据*/
scanf("%s",stul.sname); /* sname为字符型数组,输入时不加地址符*/
scanf("%d",&stul.sage); /*输入stul的sage成员的数据*/
scanf("%s",stul.depmt); /*,depmt为字符型数组,输入时不加地址符*/
scanf("%f"&stul.cscore); /*输入stul的cscore成员的数据*/
可以看到,sname及depmt都是字符型数组,在为这两个成员输入数据时不用加地址符“&”。
(2)对结构体变量的输出操作
同输入一样,也不可以用printf()函数对一个结构体变量进行整体输出操作,只能逐个输出结构体变量的每个成员。例如,输入前面定义的student型变量stul的各个成员数据:
printf("%d",stul.sno);
printf("%s",stul.sname);
printf("%d",stul.sage);
printf("%s",stul.depmt);
printf("%f",stul.cscore);
(3)对结构体变量的赋值操作
对于结构体变量的赋值,可以对其中的每个成员赋值,例如:
struct student stul,stu2;
stul.sno =1001;
strcpy(stul.sname ,"zhangsan");
stul.sage =19;
strcpy(stul.depmt ,"computer");
stul.cscore =98;
定义了两个student结构体型变量stul、stu2,为stul中的各个成员分别赋值。需要注意的是sname成员、depmt成员都是字符数组的形式,不能直接用赋值号赋值,如下形式是错误的:
stul.sname="zhangsan";
必须使用字符串复制函数strcpyO实现将一个字符串常置赋给结构体中的字符串型成员。
C语言中结构体变量支持整体赋值。例如,stu1中各个成员都已赋值,那么,可以使用如下形式将stu1整体赋给stu2变量。:
stu2=stul;
(4)结构体变量作为函数参数
结构体变量作为函数参数时可以有两种形式:
①将结构体变量的成员作为函数的实参,形参为普通变量或数组。如果结构体变量的某个成员是普通变量类型,作为实参,形参也是一个普通变量,参数传递就是变量到变量的值传递的形式。如果结构体的某个成员是数组,作为实参,形参也应该是一个数组,传递方式为地址传递,形参所做的改变能够带回实参。
已有 22658 名学员学习以下课程通过考试
最需教育客户端 软件问题一手掌握
去 App Store 免费下载 iOS 客户端
点击加载更多评论>>