在数据结构里经常会用到malloc函数,但是它的功能我一直都是很模糊的,今天在看数据结构的时候忽然感觉到顿悟,有一些心得和大家分享一下。
先分享这样的一段程序.
#include<stdio.h>
#include<malloc.h>
typedef struct Node
{
int data;
struct Node* next;
}NODE,*pNode;
int main(void)
{
pNode Pa;
pNode Pb=(pNode)malloc(sizeof(NODE));
//printf("%d,%d,%d",Pa,Pa->data,Pa->next);
printf("\n");
printf("%d,%d,%d",Pb,Pb->data,Pb->next);
return 0;
}
程序的输出结果是这样的
image.png
如果把第一个printf取消注释的话
运行的结果是这样的
image.png
由此可见malloc函数的作用
下面说一下我对这个函数的一点理解
malloc函数是为指向结构体的指针指向了堆内存里面的一个结构体变量,而这个结构体里面的值是系统自动分配的值。如果没用使用malloc函数,那么仅仅是开辟了一块栈内存空间,并没用一个可以指的结构体变量,换做Java来思考的话就相当于你并没有实例化对象,malloc就是实例化对象的一个过程。
网友评论