我正在读一本关于数据结构的书。
我在练习中看到了这样的代码,
这是结构声明。
typedef struct node
{
int data;
struct node *next;
}node;
函数声明,它将是树的头部..
node * create (int n); // please explain this
create是一个函数
但我们可以写这个吗?
int create (int n);
使用哪一个以及前一个功能声明的优点是什么?
答案 0 :(得分:2)
node * create (int n);
函数为create
,它将接受一个int
参数[n
]并返回指向node
的指针。
int create (int n);
功能为create
,会接受一个int
参数[n
]并返回int
。
在您的情况下,node
是结构的typedef,显然不是int
。所以,你不能用后者替换替换第一个函数原型。他们都有不同的回归类型。因此,advantage
的比较毫无意义。
Which one to use
- 取决于您的需要。
NULL
)],你需要使用node * create (int n);
稍后您可以在调用者函数中使用指向新分配节点的指针。int create (int n);
答案 1 :(得分:0)
node * create (int n);
此函数将n
作为参数,并返回类型为node *
的指针。这里node
是一个如上定义的结构,这个函数返回一个指向这个结构的指针
您不应该使用int
作为此函数的返回类型,因为它返回的是指针,而不是值。
答案 2 :(得分:0)
为此,您可以这样声明..
int * myFunction(int N)
{. . .}
表示它将整数N
作为参数并返回类型为int
的指针。
注意:
要记住的是,返回地址并不是一个好主意 一个局部变量到函数外部所以你必须这样做 将局部变量定义为静态变量。
喜欢,
int * myFunction(int N) {
static int M[10]
....
return M;
}
来到你的问题......
node * create (int n);
表示函数create将采用整数参数n
,它将返回指向node
的指针。
所以使用,
node * create (int n);
返回一个指针
int create (int n);
返回一个整数!! 希望它有所帮助!!