【C语言提高40】结构体套一级指针和二级指针
来源:互联网 发布:淘宝主图最好是多少kb 编辑:程序博客网 时间:2024/05/16 10:43
//结构体数组 3 输入老师年龄 排序#include<stdlib.h>#include<stdio.h>#include<string.h>#include<ctype.h>typedef struct teacher{char name[64];char*alisname; //分配了四个字节的内存 需要显式的分配内存char**sName;int age;int id;}teacher;void printfTeacher(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 createTeacher(teacher**pT, int num){int i = 0, j = 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++){//malloc一级指针tmp[i].alisname = (char*)malloc(60);//指针明确指向 显式的分配内存//malloc二级指针//二级指针的第三种内存模型 自己打造内存空间char**p = NULL;p = (char**)malloc(3 * sizeof(char*)); //打造二维内存 p二级指针 p[]就是一级指针for (j = 0;j < 3;j++){p[j] = (char*)malloc(120);}tmp[i].sName = p;//挂上去}//pT二级指针 *pT就是一级指针 也就是pArray的地址*pT = tmp;//二级指针 形参 去间接修改实参的值return 0;}void freeTeacher(teacher*p, int num){int i = 0, j = 0;if (p == NULL){return;}for (i = 0; i < num; i++){//释放一级指针if (p[i].alisname != NULL){free(p[i].alisname);}//释放二级指针if (p[i].sName != NULL){char**p1 = p[i].sName;for (j = 0;j < 3;j++){if (p1[j] != NULL){free(p1[j]);}}free(p);p[i].sName = NULL;}}}void main51(){int ret;int i = 0,j=0;int num = 3;teacher*pArray = NULL;ret = createTeacher(&pArray, num);if (ret != 0){printf("funerr_createTeacer()");return;}for (i = 0; i < num; i++){printf("\nplease enter age:");scanf_s("%d", &(pArray[i].age));printf("\nplease enter alias:");scanf_s("%s", pArray[i].alisname);//向指针所指向的内存空间拷贝数据for (j = 0;j < 3;j++){printf("\nplease enter stuent name");scanf_s("%s",pArray[i].sName[j]);}}printfTeacher(pArray, num);sortTeacher(pArray, num);printf("排序之后\n");printfTeacher(pArray, num);printf("hehehe\n");system("pause");return;}
0 0
- 【C语言提高40】结构体套一级指针和二级指针
- 【C语言提高38】结构体套一级指针
- C语言:结构体中一级指针和二级指针的创建与释放示例
- C语言之结构体嵌套一级指针和二级指针
- C语言:结构体中一级指针和二级指针的创建与释放示例
- C 结构体嵌套一级指针 二级指针 动态分配内存
- C 结构体嵌套一级指针 二级指针 动态分配内存
- 一级指针和二级指针
- 一级指针和二级指针
- C语言之一级指针与二级指针剖析
- c语言中一级指针和二级指针做函数参数
- C/C++学习之C提高-----结构体定义、初始化、引用、结构体做函数参数、结构体数组、结构体中套一级/二级指针、结构体深copy和浅copy
- C语言:一级指针,二级指针,三级指针,指针数组,数组指针的综合示例
- 【C语言提高13】二级指针
- 结构体成员内部含有一级指针和二级指针的情况
- c语言二级指针和函数指针
- C语言指针和二级指针
- C语言中,一级指针,二级指针,数组,一位数组指针,二位数组指针浅谈
- 程序员的数学 -- 目录
- Mybatis 批量插入、存储过程
- nginx的配置问题
- Android 补间动画解析(一)
- 【C语言提高38】结构体套一级指针
- 【C语言提高40】结构体套一级指针和二级指针
- jsp--自定义标签模仿forEach
- 从产品经理的境界谈创业
- 第一次使用Android Studio时你应该知道的一切配置(2)
- Android 之 观察者模式
- Project Tango tablet development kit
- 第一次使用Android Studio时你应该知道的一切配置(3)
- 文章标题
- Bash shell编程<五>:while命令、until命令