#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct
{
char *tName;
int age;
char **stuName;
}Teacher;
int creatTeacher(Teacher **teacher, int num)
{
int i, j;
*teacher = (Teacher *)malloc(sizeof(Teacher)*num);
for (i = 0; i < num; i++)
{
(*teacher)[i].tName = (char*)malloc(sizeof(char) * 20); //给num个老师的tname开辟内存空间
(*teacher)[i].stuName = (char**)malloc(sizeof(char*) * 3); //开辟三个指向char*的内存空间
for (j = 0; j < 3; j++)
{
(*teacher)[i].stuName[j] = (char*)malloc(sizeof(char) * 20);//每个char*分配20个字符
}
}
return 0;
}
int freeTeacher(Teacher **teacher, int num)
{
int i, j;
char **p;
for (i = 0; i < num; i++)
{
if ((*teacher)[i].stuName != NULL)
{
p = (*teacher)[i].stuName;
for (j = 0; j < 3; j++)
{
if (p[j] != NULL)
free(p[j]);
}
free(p);
(*teacher)[i].stuName = NULL;
}
}
free(*teacher);
*teacher = NULL;
return 0;
}
int main()
{
Teacher *t = NULL;
int i, j,x;
x = 0;
creatTeacher(&t, 2);
char tName1[20] = { "abcd" };
char stuName[][20] = { "11","22" ,"33","111","222","333" };
for (j = 0; j < 2; j++)
{
t[j].tName = tName1;
t[j].age = 30;
for (i = 0; i < 3; i++,x++) {
//t[j].stuName[i] = stuName[x];//
strcpy(t[j].stuName[i], stuName[x]);
}
}
freeTeacher(&t, 2);
system("pause");
}