结构体中套二级指针
结构体
typedef struct Teacher
{
char name[64];
char *alisname;
char **stuname;
int age;
int id;
}Teacher;
给结构体分配内存、在结构体中套二级指针
int createTeacher02(Teacher **p, 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++) { char **p = NULL; //malloc一级指针 tmp[i].alisname = (char *)malloc(60); //二级指针的第三种内存模型 //打造二维内存 p = (char **)malloc(3 * sizeof(char *)); for(j = 0; j<3; j++) { p[j] = (char *)malloc(120); } tmp[i].stuname = p; } *p = tmp; //二级指针 形参 去间接的修改 实参 的值 return 0; }
内存模型图
释放内存空间 一层一层释放
void FreeTeacher(Teacher *p, int num) { int i = 0, j = 0; if(p == NULL) { return ; } for(i = 0; i < num; i++) { char **myp; //释放一级指针 if(p[i].alisname != NULL) { free(p[i].alisname); } free(p); //释放二级指针 if(p[i].stuname != NULL) { myp = p[i].stuname; for(j = 0; j < 3; j++) { if(myp[j] != NULL) { free(myp[j]); } } free(myp); p[i].stuname = NULL; } } free(p); }
欢迎加入作者的小圈子
扫描下方左边二维码加入QQ交流群,扫描下方右边二维码关注个人微信公众号并,获取更多隐藏干货,QQ交流群:859800032 微信公众号:Crystal软件学堂


作者:Liu_Jing bilibili视频教程地址:https://space.bilibili.com/5782182 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在转载文章页面给出原文连接。 如果你觉得文章对你有所帮助,烦请点个推荐,你的支持是我更文的动力。 文中若有错误,请您务必指出,感谢给予我建议并让我提高的你。 |