c语言中定义结构体指针并指向一片内存空间和直接定义一个结构体变量的区别

Node *p=(Node *)malloc(sizeof(Node));和Node p两个有什么区别???Node是一个结构体!谢谢!
最新回答
劣性失格

2024-10-30 08:17:30

malloc函数是动态分配内存空间函数,sizeof函数是计算字节大小函数,(Node *)是malloc函数的返回类型,Node *p=(Node *)malloc(sizeof(Node)),用malloc函数开辟一段新的内存空间,大小是node的大小,返回类型是指向node类型的指针,同时将这个地址指向p指针
而Node p则是定义了一个node的结构体变量
吧唧你一口

2024-10-30 08:22:02

Node *p 定义了一个Node结构体指针,并在堆上申请了一个Node结构体大小的内存空间,该指针需要调用free()释放,而Node p 只是声明了一个结构体对象
别闹~乖

2024-10-30 08:26:40

区别就是内存分配的位置不一样,malloc 是在堆上申请的内存,使用完需要手动释放(free)

Node p 如果是在函数内部,则是在栈区分配内存,系统自动回收释放(函数执行完成后)