【问题标题】:init() function call in CC中的init()函数调用
【发布时间】: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

标签: c pointers struct initialization declaration


【解决方案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 函数来设置一些值。

    【讨论】:

      猜你喜欢
      • 2021-06-05
      • 2020-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-25
      • 2016-01-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多