#include <malloc.h>
#include <string.h>
#include <ctype.h>
#include "stdio.h"
/**
*
* 结构体作为函数参数输入
*
*/
typedef struct Teacher{
char name[64];
int age;
int id;
} Teacher;
//打印
void printTeacherAge(struct Teacher *t1,int num){
for(int i=0;i<num;i++){
printf("Teacher age:%d \n",t1[i].age);
}
}
//排序
void sortTeacherAge(struct Teacher *teacherArray,int num){
for(int i=0;i<num;i++){
for(int j=i+1;j<num;j++){
if(teacherArray[i].age>teacherArray[j].age){
int tem=teacherArray[i].age;
teacherArray[i].age=teacherArray[j].age;
teacherArray[j].age=tem;
}
}
}
}
//创建
Teacher* createTeacher(int num){
struct Teacher *tem=NULL;
tem=(struct Teacher*)malloc(sizeof(struct Teacher)*num);
if(tem==NULL)return NULL;
return tem;
}
void createTeacher2(struct Teacher **teacher,int num){
struct Teacher *tem=NULL;
tem=(struct Teacher*)malloc(sizeof(struct Teacher)*num);
if(tem==NULL)return ;
*teacher=tem;//二级指针形参 去间接修改实参的值
}
void freeTeacher(struct Teacher *p){
if(p!=NULL){
free(p);
}
}
//结构体数组 输入老师的年龄 ,排序
int main(){
int i=0;
int num=2;
// struct Teacher array[num];// 在stack中分配内存
struct Teacher *array=NULL;
//调用创建
//array=createTeacher(num);
createTeacher2(&array,num);
for(i=0;i<num;i++){
printf("please input Teacher age:");
scanf("%d",&(array[i].age));
}
/* for(i=0;i<num;i++){
printf("Teacher age:%d \n",array[i].age);
}*/
//调用函数
sortTeacherAge(array,num);
printTeacherAge(array,num);
freeTeacher(array);
}
C 进阶结构体参数输入
最新推荐文章于 2024-03-17 00:14:07 发布