正确使用结构体和结构体指针
通过malloc
开辟的一组地址空间是可以通过下标取值的,这段代码,使用malloc
开辟一组结构体类型的地址空间,然后通过下标进行取值。
- 创建结构体节点,直接通过
.
运算符赋值 - 开辟一组结构体动态空间,通过下标的方式赋值
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
int main(){
// 创建一个node节点
struct TreeNode node;
node.val = 0;
printf("%d\n", node.val);
// 开辟一组动态空间
struct TreeNode *node1 = (struct TreeNode*)malloc(sizeof(struct TreeNode)*100);
node1[0].val = 1;
node1[1].val = 2;
printf("%d\n", node1[0].val);
printf("%d\n", node1[1].val);
}
在结构体中定义结构体
伪代码
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
// 定义一个队列 用来存储结构体类型的元素
struct queue{
// 队列三要素:1. 队首位置,2. 队尾位置,3. 队列元素的空间大小
int cur_elem_pos;
int last_elem_pos;
struct TreeNode *elem;
};
// 初始化队列
void init_queue(struct queue* q){
q->cur_elem_pos = 0;
q->last_elem_pos = 0;
q->elem = (struct TreeNode *)malloc(sizeof(struct TreeNode)*1010);
}
- 创建一个队列结构体
- 在结构体中定义一个
TreeNode
的结构体指针 - 初始化队列:为
TreeNode
指针开辟一组动态空间