您当前的位置:首页 > 互联网教程

C语言结构体数组的定义是什么

发布时间:2025-05-12 17:36:59    发布人:远客网络

C语言结构体数组的定义是什么

一、C语言结构体数组的定义是什么

1、结构数组就是具有相同结构类型的变量集合。

2、假如要定义一个班级40个同学的姓名、性别、年龄和住址,可以定义成一个结构数组。如下所示:

3、 struct{ char name[8]; char sex[2]; int age; char addr[40];}student[40];也可定义为:

4、 struct string{ char name[8]; char sex[2]; int age; char addr[40];}; struct string student[40];需要指出的是结构数组成员的访问是以数组元素为结构变量的,其形式为:

5、 student[0].name student[30].age实际上结构数组相当于一个二维构造,第一维是结构数组元素,每个元素是

6、一个结构变量,第二维是结构成员。

7、注意:结构数组的成员也可以是数组变量。

8、 struct a{ int m[3][5]; float f; char s[20];}y[4];为了访问结构a中结构变量y[2]的这个变量,可写成

二、c语言编程:建立一个结构体数组

一、要定义两个结构体,一个是日期年月日,一个是员工。

二、程序包含三个功能:1、结构数组的输入。2、结构数组的输出。3、统计平均工资。根据编程习惯,三功能要写成独立函数,方便扩展和调用。

ps:员工数量定义成常量,也为编程习惯,便于修改。另外,日期验证我只写了月份检测给你参考。需扩展,自行编写函数验证。

void inputInfo(EME emes[]);//输入

void outputInfo(EME emes[]);//输出

float getAvg(EME emes[]);//求平均工资

printf("平均工资:%f",getAvg(emes));

printf("请输入员工%d的信息:\n",i+1);

printf("工号:"),scanf("%d",&emes[i].id);

printf("姓名:"),scanf("%s",emes[i].name);

printf("日期(分别输入年月日,空格分割):"),scanf("%d%d%d",&emes[i].date.year,&emes[i].date.month,&emes[i].date.day);

if(emes[i].date.month>12|| emes[i].date.month<=0)//日期输入的验证不通过时,重新输入,验证可单独写函数,这里只做参考!

printf("输入日期不符合,请重新输入!\n\n"),i--;

printf("工资:"),scanf("%d",&emes[i].wage);

printf("所有员工的信息为:----------------------------\n");

for(i=0,printf("员工%d的信息:\n",i+1);i<M;i++)

printf("工号:%d\n",emes[i].id);

printf("姓名:%s\n",emes[i].name);

printf("日期:%04d-%02d-%02d\n",emes[i].date.year,emes[i].date.month,emes[i].date.day);

printf("工资:%d\n",emes[i].wage);

三、c语言结构体中的一个char数组怎么赋值

1、(1)用字符常量逐个初始化数组。例如:

2、char a[8]={'i','l','o','v','e','y','o','u'};

3、把8个字符依次分别赋给c[0]~c[7]这8个元素。

4、如果在定义字符数组时不进行初始化,则数组中各元素的值是不可预料的。如果花括号中提供的初值个数(即字符个数)大于数组长度,则出现语法错误。

5、如果初值个数小于数组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自动定为空字符(即'\0')。

6、如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度,系统会自动根据初值个数确定数组长度。

7、例如:char c[]={‘c’,‘’,‘p’,‘r’,‘o','g','r','a','m'};

8、这时c数组的长度自动定为9。也可以定义和初始化一个二维字符数组,例如:

9、char diamond[5][5]={{'','','#'},{'','#','','#'},{'#','','','','#'},

10、{'','#','','#'},{'','','#'}};用它代表一个菱形的平面图形。

11、(2)字符串常量初始化数组。例如:

12、char c[]={‘c’,‘’,‘p’,‘r’,‘o','g','r','a','m'};

13、可写为:char c[]={"C program"};

14、或去掉{}写为:char c[]="C program";

15、注意:此时数组c的长度不是9,而是10。因为字符串常量的最后由系统加上一个'\0'。上面的初始化与下面的初始化等价。

16、char c[]={‘c’,‘’,‘p’,‘r’,‘o','g','r','a','m','\0'};

17、其定义的一般形式是:char数组名[数据长度]

18、c[0]='I';c[1]='';c[2]='l';c[3]='o';c[4]='v';c[5]='e';c[6]='';c[7]='y';c[8]='o';c[9]='u';

19、以上定义了c为字符数组,包含10个元素。

20、由于字符型数据是以整数形式(ASCII代码)存放的,因此也可以用整型数组来存放字符数据,例如:

21、但这时每个数组元素占2个字节的内存单元,浪费存储空间。

22、字符数组也可以是二维或多维数组,例如:

23、字符数组的初始化与数值型数组初始化没有本质区别。但它除了可以逐个给数组元素赋予字符外,也可以直接用字符串对其初始化。

24、(1)用getchar()或scanf()的'%c'格式符对数组进行字符赋值。例如,对于数组a[10]:用getchar()赋值:

25、scanf("%c",&a&lt;i&gt;);

26、(2)用scanf()的'%s'格式对数组赋值。还是对于数组a[10]:

27、输入”C program“并回车时,a数组会自动包含一个以”\0“结尾的字符串”C program“。

28、(1)用putchar()或printf()的‘%c’格式符对数组进行字符赋值。例如,对于数组a[10]:用putchar()赋值:

29、printf("%c",a&lt;i&gt;);

30、(2)用printf()的'%s'格式对数组赋值。还是对于数组a[10];