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

Node *p=(Node *)malloc(sizeof(Node));和Node p两个有什么区别???Node是一个结构体!谢谢!

malloc函数是动态分配内存空间函数,sizeof函数是计算字节大小函数,(Node *)是malloc函数的返回类型,Node *p=(Node *)malloc(sizeof(Node)),用malloc函数开辟一段新的内存空间,大小是node的大小,返回类型是指向node类型的指针,同时将这个地址指向p指针
而Node p则是定义了一个node的结构体变量
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-21
Node *p 定义了一个Node结构体指针,并在堆上申请了一个Node结构体大小的内存空间,该指针需要调用free()释放,而Node p 只是声明了一个结构体对象
第2个回答  2012-06-21
区别就是内存分配的位置不一样,malloc 是在堆上申请的内存,使用完需要手动释放(free)

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

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网