[英]C Function returning pointer and a dynamic array
我有一个函数可以创建一个动态数组,其大小为我选择的整数。 代码:
int *create(int n) {
int *nn;
nn = (int*)malloc(n*sizeof(int));
return nn;
}
我在main()
这样称呼它
int *nn
int n = 5; /* size = 5 */
nn = create(n);
我想我得到了int *create(...)
部分,它应该将地址返回到我返回的 nn 的第一个位置。 但是我想知道,有没有办法在函数中不使用指针而是修改return nn;
部分以便我仍然返回动态数组nn
的地址?
我想删除*
在*create
您可以修改代码以设置按地址传递给函数的指针,如下所示:
void create(int n, int** res) {
*res = malloc(n*sizeof(int));
}
以下是您现在调用此函数的方式:
int *nn
int n = 5;
create(n, &nn);
我只想使用一个参数,并且能够通过
return
。
你可以直接返回malloc
的结果,因为这就是你的函数所做的一切:
int *create(int n) {
return malloc(n*sizeof(int));
}
该调用也可以与声明结合使用:
int n = 5;
int *nn = create(n);
当然,如果你这样做,你还不如做惯用语
int *nn = malloc(n*sizeof(*nn));
并完全删除create
功能。
你可以这样做:
int *create(int n)
{
return malloc(n*sizeof(int));
}
这样您就不需要在create()
函数中使用临时变量。 但是我认为创建一个只调用malloc
的函数没有意义。
如果你希望你的函数返回一个整数数组,你需要你的函数采用int *create()
的形式,因为一个数组可以被认为是指向它的第一个元素的指针,在你的情况下是一个整数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.