我尝试用链表实现一个栈,首先我有以下代码:
typedef struct Node {
int data; // integer data
struct Node* next; // pointer to the next node
} Node;
Node* inti_stack() {
Node* node = NULL;// allocate a new node in a heap
node = malloc(sizeof * node);
if (!node) exit(EXIT_FAILURE);
return node;
}
对于inti_stack
函数,我可以只执行以下操作吗?
Node* inti_stack() {
Node* node = malloc(sizeof * node);
if (!node) exit(EXIT_FAILURE);
return node;
}
2条答案
按热度按时间but5z9lq1#
在第一种情况下:
node
的值是确定的。如果成功,malloc()
将用指向堆内存块的指针覆盖它。在第二种情况下:
node
的值是不确定的,但是它将被malloc()
覆盖。所以是的,它们是等价的。尽管后者更可取。
注意
malloc()
在失败时会返回一个NULL
指针,并且在一些实现中设置errno
。您的代码应该检查它。旁白:为什么
exit()
没有错误消息?egdjgwm82#
在第一个代码片段中
立即重写所声明的指针
node
。所以写就够了
如果函数
malloc
无法分配内存,则返回空指针。注意,函数
inti_stack
的名称不清楚。