理论教育 C语言结构体数组的初始化

C语言结构体数组的初始化

时间:2023-11-21 理论教育 版权反馈
【摘要】:它的一般格式为:例如:结构体数组tStudentInfo完成初始化后,其元素的值分别为tStudentInfo [ 0 ] = { " 15060138" ," ZHANG Li" , 'F', 19, 85.0 } , tStudentInfo [ 1 ] = { " 15060140" , " WANG Hong" , 'M' , 19,89.0} , tStudentInfo [ 2 ] = { " 15060141 " , " ZHANG Huan" , 'M' , 18, 76.0}在对结构体数组初始化时,要将所有元素的初始化数据用花括号括起来,而每个结构体元素也要用花括号括起来。因此,结构体数组初始化至少有两层花括号。

C语言结构体数组的初始化

它的一般格式为:

例如:

结构体数组tStudentInfo完成初始化后,其元素的值分别为tStudentInfo [ 0 ] = { " 15060138" ," ZHANG Li" , 'F', 19, 85.0 } , tStudentInfo [ 1 ] = { " 15060140" , " WANG Hong" , 'M' , 19,89.0} , tStudentInfo [ 2 ] = { " 15060141 " , " ZHANG Huan" , 'M' , 18, 76.0}

在对结构体数组初始化时,要将所有元素的初始化数据用花括号括起来,而每个结构体元素也要用花括号括起来。因此,结构体数组初始化至少有两层花括号。

说明:

(1)为了增加可读性,每个结构体元素按行初始化。

(2)如果将数组中所有的元素都初始化,在数组初始化时,数组的元素个数可以不指定,系统根据给出的初值个数,确定数组元素的个数。

(3)如果初始化的数据个数少于数组元素的个数,则数组元素的个数不能省略。系统对前面指定的元素初始化,对其他未指定的元素中数值型成员初始化为0,字符型成员初始化为'\0'。

(4)结构体数组中的每一个元素就是一个结构体变量,所以,引用结构体数组元素的方法与引用结构体变量的方法相同。

例10.3 输入/输出3名学生的信息并计算学生的平均分。

编写程序:

创建一个名为“eg10_3.c”的新文件,在编辑窗口中输入下面的程序代码。(www.daowen.com)

运行结果:

程序说明:

scanf()语句接收字符串时,是以空格标志该字符串结束;scanf()在接收字符时,会将前一个数据后的空格或回车作为有效字符接收。所以,不要用scanf ()函数来输入包含字符数据在内的一组不同类型的数据。

结构体变量成员的数据类型通常是不一样的,可以用gets ()函数输入,即将每一个数据(单个的字符除外)都作为字符串处理,分别存入字符数组中。然后,用系统提供的函数将字符串转换为相应的数据类型。

常用的类型转换的函数有3个:atoi ( ) , atof ()和atol ( )。其具体的格式及功能如下。

(1) int atoi ( char * str):将str所指向的字符串转换为整型,函数的返回值为整型。

(2) double atof( char * str):将str所指向的字符串转换为双精度浮点型,函数的返回值为双精度浮点型。

(3) long atol ( char * str ):将str所指向的字符串转换为长整型,函数的返回值为长整型。

程序中用到了类型转换的函数atoi()和atof( ),因此,要包含头文件“stdlib.h”。

思考:

如果用scanf()函数输入结构体变量的成员,会出什么情况呢?例如:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈