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
。
我正在学习在线教程,该教程向我展示了以下(简化的)代码:
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
。