结构体中套用一级指针
2015-08-06 11:17
399 查看
1.结构体内套用一级指针
2.结构体做参数
3.结构体做输出参数
4.结构体内存图
2.结构体做参数
3.结构体做输出参数
#define _CRT_SECURE_NO_WARNINGS #include <stdlib.h> #include <string.h> #include <stdio.h> typedef struct Teacher { char name[64]; char *alisname; 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 sortTeacer(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 * createTeacher01(int num) { Teacher * tmp = NULL; tmp = (Teacher *)malloc(sizeof(Teacher) * num); // Teacher Array[3] if (tmp == NULL) { 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 (tmp == NULL) { return -1; } memset(tmp, 0, sizeof(Teacher) * num); for (i=0; i<num; i++) { tmp[i].alisname = (char *)malloc(60); } *pT = tmp; //二级指针 形参 去间接的修改 实参 的值 return 0; // } void FreeTeacher(Teacher *p, int num) { int i = 0; if (p == NULL) { return; } for (i=0; i<num; i++) { if (p[i].alisname != NULL) { free(p[i].alisname); } } free(p); } void main() { int ret = 0; int i = 0; //Teacher Array[3]; //在stack 分配内存 int num = 3; Teacher *pArray = NULL; ret = createTeacher02(&pArray, num); if (ret != 0) { printf("func createTeacher02() er:%d \n ", ret); return ret; } for (i=0; i<num; i++) { printf("\nplease enter age:"); scanf("%d", & (pArray[i].age) ); printf("\nplease enter name:"); scanf("%s", pArray[i].name ); //向指针所指的内存空间copy数据 printf("\nplease enter alias:"); scanf("%s", pArray[i].alisname ); //向指针所指的内存空间copy数据 } //打印老师年龄 // for (i=0; i<num; i++) // { // printf("age:%d \n", Array[i].age); // } printTeacher(pArray, num); sortTeacer(pArray, num); printf("排序之后\n"); printTeacher(pArray, num); FreeTeacher(pArray, num); printf("hello...\n"); system("pause"); return ; }
4.结构体内存图
相关文章推荐
- poj 3278 Catch That Cow
- 解决FaustCplus的两个bug
- context-param和init-param区别
- 数据库水平切分的实现原理(分库,分表,主从,集群,负载均衡)
- angularjs 高级玩法 创建递归的模板
- 如何用matlab批量新建和删除文件夹?
- macos下sed小试
- 迷宫城堡--hdu1269(连通图)
- 如何解決 Homebrew Update 失敗?
- 用js来实现页面的换肤功能(带cookie记忆)
- win10系统更新高级选项里没有快速选项卡怎么办?
- android包解包、打包、签名
- 优先队列 PriorityQueue (用堆实现的)
- List排序问题
- 1、Socansoft
- 获取本机信息如IP 电脑名称等类
- Linux系统编程--lseek调用
- POJ 2128:Highways
- C++语法,复制构造函数与=运算符重载
- Android--Camera.addCallbackBuffer/setPreviewCallbackWithBuffer模式使用总结