位置:首页 > 软件操作教程 > 编程开发 > C语言 > 问题详情

C语言 结构体变量的引用

提问人:刘团圆发布时间:2020-12-02

定义了一个结构体变量后,就可以对它进行赋值、输入、输出、计算等操作。

(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)结构体变量作为函数参数 

结构体变量作为函数参数时可以有两种形式:

①将结构体变量的成员作为函数的实参,形参为普通变量或数组。如果结构体变量的某个成员是普通变量类型,作为实参,形参也是一个普通变量,参数传递就是变量到变量的值传递的形式。如果结构体的某个成员是数组,作为实参,形参也应该是一个数组,传递方式为地址传递,形参所做的改变能够带回实参。

继续查找其他问题的答案?

相关视频回答
回复(0)
返回顶部