C语言中,使用malloc函数向内存中动态申请空间。
函数的原型是extern void *malloc(unsigned int num_bytes);
可见,函数返回的是指针类型,参数是要申请的空间的大小。
例如,我们在申请一个Node节点的时候。
#include<stdio.h> #include<stdlib.h> typedef struct { int num; struct Node *next; }Node; int main() { Node *newNode; newNode = (Node *)malloc(sizeof(Node)); newNode->num=999; printf("%d",newNode->num); return 0; }
定义了一个节点指针,动态申请Node大小的内存空间,将返回的指针强制转化为Node型的,这样就完成了节点指针的创建。这种创建方式比较灵活,当我们不需要当前这个Node的时候,我们可以重新让其指向另一个节点。
而如果直接声明的时候,Node类型节点就固定了,知道离开作用域。
同时,取变量的时候,用结构体变量直接取分量,用“.”,用指向结构体的指针取分量的时候,用“->”,也可以用(*newNode).num取变量,这两个是等价的。注意括号,否则编译不能通过。