C中的init()函数调用
Posted
技术标签:
【中文标题】C中的init()函数调用【英文标题】:init() function call in C 【发布时间】:2021-12-04 05:53:40 【问题描述】:我正在关注一个在线教程,该教程向我展示了以下(简化的)代码:
typedef struct
int data;
Node* next;
Node;
int main()
Node *head;
init(&head);
return 0;
init
函数的用途和功能是什么?我自己没有定义它,但是我也在努力在线查找文档。
【问题讨论】:
教程没有解释吗?如果没有,就没有太多教程。我们无法确定它的作用,因为我们没有写。但很可能它只是*head = NULL;
初始化一个空列表。
init 不在标准库中
貌似教程有自己的init函数来初始化head
【参考方案1】:
首先声明此声明
typedef struct
int data;
Node* next;
Node;
不正确。此数据成员声明中使用的名称Node
Node* next;
未定义。
你需要写
typedef struct Node
int data;
struct Node* next;
Node;
至于你的问题然后在这个声明中
Node *head;
指针head
有一个不确定的值,因为它没有被初始化。
所以看来函数init
只是初始化了指针。您需要通过指向它的指针通过引用传递指针。否则该函数将处理指针head
的副本。取消对指针的引用,您将可以直接访问可以在函数内更改的原始指针 head
。也就是函数可以如下所示
void init( Node **head )
*head = NULL;
注意你可以只写main
Node *head = NULL;
无需调用函数init
。
【讨论】:
【参考方案2】:我认为init
功能将在下一个视频中实现。我想如果您创建一个新节点(或本例中的结构)以防止 一些复活节彩蛋 未定义的行为,我想您的老师想使用一个 init 函数来设置一些值。
【讨论】:
以上是关于C中的init()函数调用的主要内容,如果未能解决你的问题,请参考以下文章