菜鸟在线C编译器:1)
结构体如下:
struct student{
Int num;
Char* name;
} Tom,*Lily;
1.如果定义成Tom的形式,不需要为结构体分配内存,但是需要对name分配内存
Tom.name =(char*)malloc(sizeof(char)*n);
使用完毕要释放内存:
free(Tom.name);
2.如果定义成 *Lily 的指针形式,则首先要对结构体分配内存
Lily = (student*)malloc(sizeof(student));
然后再如上所示给name分配内存:
Tom.name =(char*)malloc(sizeof(char)*n);
用完后先释放name的内存,再释放结构体的内存
free(Lily.name);
free(Lily);
3.若要建立一个有n元素结构体数组Student *class;
class =(student*)malloc(sizeof(student)*n)
初始化name
for(i = 0; i<n;i++){
Class[i].name = (char*)malloc(sizeof(char)*m);
}
释放内存
for(i = 0; i<n;i++){
free(Class[i].name)
}
free(class);