结构体作为函数参数-malloc操作

来源:互联网 发布:阿里云搭建ssr 编辑:程序博客网 时间:2024/05/21 16:21
#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");}
由于打印函数不管是栈还是堆内存当中打印函数都不用改变,所以我们可以理解他
0 0