day5_结构体做函数参数
来源:互联网 发布:淘宝店主有话说范文 编辑:程序博客网 时间:2024/05/17 22:18
1、结构体做函数参数
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>#include <windows.h>typedef struct teacher{ char name[64]; int age; int id;}teacher;void printteacher(teacher *array, int num){ int i = 0; for(i = 0; i<num; i++) { printf("age:%d \n",array[i].age); }}void sortteacher(teacher *array, int num){ int i, j; teacher tmp; for(i = 0; i<num; i++) { for(j = i + 1; j<num; j++) { if(array[i].age > array[j].age) { tmp = array[i]; array[i] = array[j]; array[j] = tmp; } } }}teacher* createteacher(int num){ teacher *tmp = NULL; tmp = (teacher *)malloc(sizeof(teacher) * num); if(NULL == tmp) { return NULL; } return tmp;}void Freeteacher(teacher *p){ if(NULL != p) { free(p); p = NULL; }}int main0201(){ int i = 0; teacher Array[3];//在栈上分配内存 for(i = 0; i<3; i++) { printf("输入年龄:\n"); scanf("%d",&(Array[i].age)); } //打印老师的年龄 printteacher(Array, 3); sortteacher(Array,3); printf("排序后;\n"); printteacher(Array, 3); system("pause"); return 0;}int main0202(){ int i = 0;// teacher Array[3];//在栈上分配内存 int num = 3; teacher *pArray = NULL; pArray = createteacher(num); for(i = 0; i<num; i++) { printf("输入年龄:\n"); scanf("%d",&(pArray[i].age)); } //打印老师的年龄 printteacher(pArray, num); sortteacher(pArray,num); printf("排序后;\n"); printteacher(pArray, num); system("pause"); return 0;}
2、结构体套一级指针
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>#include <windows.h>typedef struct teacher{ char name[64]; char *sname; int age; int id;}teacher;void printteacher(teacher *array, int num){ int i = 0; for(i = 0; i<num; i++) { printf("age:%d \n",array[i].age); }}void sortteacher(teacher *array, int num){ int i, j; teacher tmp; for(i = 0; i<num; i++) { for(j = i + 1; j<num; j++) { if(array[i].age > array[j].age) { tmp = array[i]; array[i] = array[j]; array[j] = tmp; } } }}teacher* createteacher(int num){ teacher *tmp = NULL; tmp = (teacher *)malloc(sizeof(teacher) * num); if(NULL == tmp) { return NULL; } return tmp;}int createteacher02(teacher **pt, int num){ int i = 0; teacher *tmp = NULL; tmp = (teacher *)malloc(sizeof(teacher) * num);//teacher Array[3] if(NULL == tmp) { return -1; } memset(tmp,0,sizeof(teacher) * num); for(i = 0; i<num; i++) { tmp[i].sname = (char *)malloc(60); } *pt = tmp;//二级指针 形参间接的修改实参的值 return 0;}void Freeteacher(teacher *p, int num){ int i = 0; if(NULL == p) { return; } for(i = 0; i<num; i++) { if(NULL != p->sname) { free(p[i].sname ); } } free(p);}int main0201(){ int i = 0; teacher Array[3];//在栈上分配内存 for(i = 0; i<3; i++) { printf("输入年龄:\n"); scanf("%d",&(Array[i].age)); } //打印老师的年龄 printteacher(Array, 3); sortteacher(Array,3); printf("排序后;\n"); printteacher(Array, 3); system("pause"); return 0;}int main0302(){ int i = 0;// teacher Array[3];//在栈上分配内存 int num = 3; teacher *pArray = NULL; createteacher02(&pArray, num); for(i = 0; i<num; i++) { printf("输入年龄:\n"); scanf("%d",&(pArray[i].age)); printf("输入姓名:\n"); scanf("%s",pArray[i].name);//向指针所指向的内存空间写入数据 printf("输入别名:\n"); scanf("%s",pArray[i].sname);//sname没有分配空间 } //打印老师的年龄 printteacher(pArray, num); sortteacher(pArray,num); printf("排序后;\n"); printteacher(pArray, num); Freeteacher(pArray, num); system("pause"); return 0;}
3、结构体套二级指针
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>#include <windows.h>typedef struct teacher{ char name[64]; char *sname; char **stuname;// char student[10][30] int age; int id;}teacher;void printteacher(teacher *array, int num){ int i = 0; for(i = 0; i<num; i++) { printf("age:%d \n",array[i].age); }}void sortteacher(teacher *array, int num){ int i, j; teacher tmp; for(i = 0; i<num; i++) { for(j = i + 1; j<num; j++) { if(array[i].age > array[j].age) { tmp = array[i]; array[i] = array[j]; array[j] = tmp; } } }}int createteacher02(teacher **pt, int num){ int i = 0; int j = 0; teacher *tmp = NULL; char **p = NULL; tmp = (teacher *)malloc(sizeof(teacher) * num);//teacher Array[3] if(NULL == tmp) { return -1; } memset(tmp,0,sizeof(teacher) * num); for(i = 0; i<num; i++) { //malloc一级指针 tmp[i].sname = (char *)malloc(60); //二级指针的第三种内存模型 { //打造二维内存 p = (char **)malloc(3 * sizeof(char *)); for(j = 0; j<3; j++) { p[j] = (char *)malloc(120); } tmp[i].stuname = p; } } *pt = tmp;//二级指针 形参间接的修改实参的值 return 0;}void Freeteacher(teacher *p, int num){ int i = 0; int j = 0; if(NULL == p) { return; } for(i = 0; i<num; i++) { //释放一级指针 if(NULL != p->sname) { free(p[i].sname ); } //释放二级指针 if(NULL != p[i].stuname) { char **myp = p[i].stuname; for(j = 0; j<3; j++) { if(NULL != myp[j]) { free(myp[j]); } } free(myp); p[i].stuname = NULL; } } free(p);}int main0201(){ int i = 0; teacher Array[3];//在栈上分配内存 for(i = 0; i<3; i++) { printf("输入年龄:\n"); scanf("%d",&(Array[i].age)); } //打印老师的年龄 printteacher(Array, 3); sortteacher(Array,3); printf("排序后;\n"); printteacher(Array, 3); system("pause"); return 0;}int main(){ int i = 0; int j = 0;// teacher Array[3];//在栈上分配内存 int num = 3; teacher *pArray = NULL; createteacher02(&pArray, num); for(i = 0; i<num; i++) { printf("输入年龄:\n"); scanf("%d",&(pArray[i].age)); printf("输入姓名:\n"); scanf("%s",pArray[i].name);//向指针所指向的内存空间写入数据 printf("输入别名:\n"); scanf("%s",pArray[i].sname);//sname没有分配空间 for(j = 0; j<3; j++) { printf("input student name:"); scanf("%s",pArray[i].stuname[j]); } } //打印老师的年龄 printteacher(pArray, num); sortteacher(pArray,num); printf("排序后;\n"); printteacher(pArray, num); Freeteacher(pArray, num); system("pause"); return 0;}
阅读全文
0 0
- day5_结构体做函数参数
- 结构体做函数参数
- 结构体基础 数组 做函数参数
- C结构体做函数参数
- 【C语言提高37】结构体元素做函数参数与结构指针做函数参数
- 结构体元素做函数参数和结构指针做函数参数
- 用结构体变量的引用做函数参数
- 指向结构体类型的指针数组做函数参数
- 【C语言提高37】结构体做函数参数进阶
- 结构体做函数
- 用结构体变量和结构体变量的指针做参数函数
- oj Problem F: 复杂类型作函数参数之结构体指针做参数
- 【代码】结构体做函数参数,实现形参向实参传递值
- C/C++ 结构体做函数参数的小成程序
- 结构体作函数参数
- 结构体作为函数参数
- 结构体作为函数参数
- 结构体作为函数参数
- view composer in laravel
- JAVA获取随机数的三种方式
- python文件选择对话框
- IntelliJ idea添加jdk
- 查看表的OID
- day5_结构体做函数参数
- 作业
- centos7虚拟机初始化配置及克隆
- 当你在设置里修改字体大小的时候,到底在修改什么
- 机器学习学习笔记.day4
- RecycleView的分割线类
- JBOSS简介及安装部署
- remove-element
- [POI2014][BZOJ3522/4543]Hotel/[JZOJ5357]校门外的树