结构体
结构体指针
在C或C++编程中,结构体指针是指向结构体的指针。结构体是一种用户定义的数据类型,可以包含多个数据成员。结构体指针则是指向这种结构体数据的指针,允许你间接访问结构体中的成员。
结构体定义
struct Person {
char name[50];
int age;
};
在C语言或C++中,定义结构体时并不会自动分配内存给具体的结构体实例。定义结构体只是告诉编译器如何组织数据,并为你创建一个新的数据类型。
只是声明了一个名为Person的结构体类型。但是没有分配任何实际的内存。只是定义了一个新的数据类型,并没有创建任何具体的Person实例。
定义结构体变量和指针
struct Person p1;
struct Person *ptr;
这里 p1 是一个 Person 类型的结构体变量,而 ptr 是一个指向 Person 类型结构体的指针。
使用结构体指针
可以让指针ptr指向结构体变量p1,并通过指针访问结构体成员。
prt = &p1
动态分配结构体
struct Person *ptr = (struct Person *)malloc(sizeof(struct Person));
这行代码在C/C++编程中用于动态分配内存,以存储一个Person结构体的实例,并返回一个指向该内存区域的指针。
ptr将指向堆中分配的内存,这段内存足以存储一个Person结构体实例。
总结
1.定义结构体:只是在编译时定义了一个新的数据类型,没有分配内存。
2.声明结构体变量:在栈上为结构体分配内存,用于存储结构体的成员。
struct Person p1;
3.动态分配内存;通过malloc在堆上分配内存,可以在运行时分配任意数量的结构体实例。
struct Person *ptr = (struct Person *)malloc(sizeof(struct Person));