参考文献
C语言中的结构体常用来做函数的封装,那么对于C的struct在一次进行回顾。
(1) 结构体的定义和使用
// 定义一个结构体
struct Person
{
int age;
int height;
};
int main(){
struct Person person_1;
// 对其中的变量赋值
person_1.age = 1;
person_1.height = 134;
struct Person *ptr = NULL;
ptr = &person_1;
cout << ptr->age << endl;
cout << ptr->height <<endl;
return 0;
}
(2) 结构体的嵌套
typedef struct tagStudent_T
{
int i_StuID;
int i_StuClass;
}Student_T;
typedef struct tagSchool_T
{
Student_T *student;
int i_SchoolRank;
}School_T;
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
typedef struct tagStudent_T
{
int i_StuID;
int i_StuClass;
}Student_T;
typedef struct tagSchool_T
{
Student_T *student; // 此处有默认的初始值
int i_SchoolRank;
}School_T;
int main(int argc,char const *argv[])
{
School_T *school = (School_T *)malloc(sizeof(School_T));
if(NULL != school)
{
school->i_SchoolRank = 1; //rank first
/*由于School_T中定义的student是一个结构体指针,必须要对其进行分配内存*/
school->student = (Student_T *)malloc(sizeof(Student_T));
if(NULL != school->student)
{
school->student->i_StuID = 12345;
school->student->i_StuClass = 5;
}
else
{
free(school);
}
}
/*这两个的free顺序最好不要调转,因为如果先free掉school的话,相当于将student得本体free了,相当于一个野指针 */
free(school->student);
free(school);
}