文章目录一、以结构体数组为函数参数(数组在堆栈存储器中制作)二、完整代码示例
一、以结构体数组作为函数参数(数组在堆栈内创建) ) ) )。
声明结构体类型 :定义结构数据类型,同时为该结构类型声明别名。 可以直接使用别名结构变量名称声明结构类型变量。 不需要在前面添加struct关键字;
typedefstructstudent { charname [5]; int age; int id; }Student;栈内存中声明结构体数组 :
//堆栈存储器中存储有Student array[3];命令行中接收数据 , 填充到结构体数组元素中 :
//在命令行中,输入要接受的年龄for(I=0; i 3; I ) printf (输入age : (n ) ); //通过命令换行符接受输入的年龄,scanf('%d”,) array[i].age )用于Student数组元素的age成员; } 结构体数组作为参数 :结构数组作为参数,可以间接赋值,修改该结构数组的元素,可以用作返回值;
此时结构体 数组 会退化为 结构体指针 ;
/** * @brief sort_struct_array按年龄排序结构数组* @param array结构指针* @param count结构数组中的元素数*/void sort _ struct _ array //学生年龄: //验证数组合法性的if(array==null ) { return; //排序for(I=0; i count; I ) for(j=I1; j count; j () if ) array[I].agearray[j].age ) { tmp=array[i]; array[i]=array[j]; array[j]=tmp; } } }}
二.完整代码示例
完整代码示例 :
# include stdio.h # include stdlib.h # include string.h/* * @ briefthestudentstruct *定义结构数据类型,并声明此结构类型的别名int age; int id; }Student; /** * @brief printf_struct_array打印结构数组* @param array数组作为函数参数包括指针* @param count数组中的元素数*/void printf _ struct _ arrray数组//打印结构数组中的结构age字段for (I=0; i count; I ) printf(studentage=%dn ),array[i].age ); } }/* * * @按年龄对brief sort _ struct _ array结构数组进行排序* @param array结构指针* @param count结构数组的元素数*/void sort _ struct _ arrray //验证数组合法性的if(array==null ) { return; //排序for(I=0; i count; I ) for(j=I1; j count; j () if ) array[I].agearray[j].age ) { tmp=array[i]; array[i]=array[j]; array[j]=tmp; }//****@brief主函数项*@return*/intmain(intargc,char* argv[],char**env ) ) /声明结构数组,并在堆栈存储器中声明studentent //在命令行中,输入要接受的年龄for(I=0; i 3; I ) printf (输入age : (n ) ); //通过命令换行符接受输入的年龄,scanf('%d”,) array[i].age )用于Student数组元素的age成员; //打印结构阵列结构age字段printf_struct_array(array,3 ); //命令行不要退出system(pause ); 返回0; }
执行结果 :
输入age :18输入age :16输入age :19 studentage=16 studentage=18 studentage=19请按任意键继续.