#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//定义一个结构体
typedef struct _Teacher
{
char name[64];
int age;
}Teacher;
int printfArr(Teacher *to,int len)
{
int i = 0;
for ( i = 0; i < len; i++)
{
printf("%d\n",to[i].age);
}
return 0;
}
//排序
int sortArr(Teacher *to, int len)
{
int i, j;
int *tmp;
if (to == NULL)
{
return -1;
}
for ( i = 0; i<len; i++)
{
for (j = i + 1; j < len; j++)
{
if (to[i].age>to[j].age)
{
tmp = to[i].age;
to[i].age = to[j].age;
to[j].age = tmp;
}
}
}
}
//创建内存
Teacher *creatMem(int len)
{
Teacher *pArray = NULL;
pArray = (Teacher *)malloc(len*sizeof(Teacher));
if (pArray == NULL)
{
return NULL;
}
return pArray;
}
int main01()
{
//定义一个数组对象
Teacher tArray[3];
//初始化一个结构体
int i = 0;
while (i < 3)
{
printf("第%d个老师年纪",i+1);
scanf("%d", &tArray[i].age);
i++;
}
printf("排序前\n");
printfArr(&tArray,3);
sortArr(&tArray, 3);
printf("排序后\n");
printfArr(&tArray, 3);
system("pause");
return 0;
}
void main()
{
//指针对象
Teacher *pArr = NULL;
//修改代码主要是mallo的使用
pArr = creatMem(3);
if (pArr == NULL)
{
printf("分配内存失败\n");
return;
}
//赋值
for (int i = 0; i < 3; i++)
{
printf("第%d个老师年纪", i + 1);
scanf("%d", &pArr[i].age);
}
//打印
printfArr(pArr,3);
sortArr(pArr,3);
printfArr(pArr, 3);
system("pause");
}
由于打印函数不管是栈还是堆内存当中打印函数都不用改变,所以我们可以理解他
结构体作为函数参数-malloc操作
最新推荐文章于 2022-09-15 22:40:35 发布