C 中的 init() 函数调用

init() function call in C

我正在学习在线教程,该教程向我展示了以下(简化的)代码:

typedef struct {
    int data;
    Node* next;
} Node;


int main(){
    Node *head;
    init(&head);
    return 0;
    
}


init 函数的用途和功能是什么?我自己没有定义它,但是我也在努力寻找在线文档。

我认为 init 功能将在下一个视频中实现。我想如果您创建一个新节点(或本例中的结构)以防止 一些复活节彩蛋 未定义的行为,您的老师想使用一个 init 函数来设置一些值。

对于初学者这个声明

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