1 //定义如下结构体 2 typedef struct student 3 { 4 int id; 5 char* name; 6 } student_t; 7 8 int main(){ 9 10 //有四种定义形式 11 12 //一、结构体变量 13 student_t xiaoming; //不需要为结构体分配内存,但是需要对name分配内存 14 xiaoming.name =(char*)malloc(10); 15 free(xiaoming.name); //释放成员指针 16 17 //二、结构体指针 18 student_t *xiaoming=NULL; 19 xiaoming = (student_t*)malloc(sizeof(student_t)); 20 xiaoming.name =(char*)malloc(10); 21 free(xiaoming.name); //释放成员指针 22 free(xiaoming); //释放指针 23 24 //三、结构体数组 25 student_t xiaoming[3]; 26 for( i = 0; i<3 ; i++ ) 27 { 28 xiaoming[i].name = (char*)malloc(10); //初始化 29 } 30 for( i = 0; i<3 ; i++ ) 31 { 32 free(xiaoming[i].name); //释放成员指针 33 } 34 35 //四、结构体数组(第三种的另一种写法) 36 student_t *xiaoming=NULL; 37 xiaoming = (student_t*)malloc(sizeof(student_t)*3); 38 for( i = 0; i<3 ; i++ ) 39 { 40 xiaoming[i].name = (char*)malloc(10); //初始化 41 } 42 for( i = 0; i<3 ; i++ ) 43 { 44 free(xiaoming[i].name); //释放成员指针 45 } 46 free(xiaoming); //释放数组 47 48 return 0; 49 }