gpt4 book ai didi

c - 这两种类型的函数声明有什么区别?

转载 作者:太空宇宙 更新时间:2023-11-04 08:34:41 25 4
gpt4 key购买 nike

我正在阅读一本关于 C 语言数据结构的书。

我在练习中看到这样的代码,

这是结构声明。

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

函数声明,它将成为树的头部......

node * create (int n);  // please explain this 

创建是一个函数

但是我们可以这样写吗?

int create (int n);

使用哪一个,函数前声明的优点是什么?

最佳答案

node * create (int n);

函数是 create,它将接受一个 int 参数 [n] 并将返回一个指向 node 的指针.

int create (int n);

函数是 create,它将接受一个 int 参数 [n] 并将返回一个 int

在您的情况下,node 是结构的 typedef,显然不是 int。因此,您不能用后一个替换第一个函数原型(prototype)。他们都有不同的返回类型。所以,比较优势是没有意义的。

使用哪个 -- 取决于您的需要。

  1. 如果您希望您的函数返回一个指针[可能是指向新分配的节点的指针,(在成功的情况下,或在失败的情况下为 NULL)],您需要使用 node * create (int n); 您稍后可以在调用函数中使用指向新分配节点的指针。
  2. 如果您希望您的函数返回成功或失败指示[可能是 1 和 0],那么您可以使用 int create (int n);<

关于c - 这两种类型的函数声明有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26778872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com