C函数返回指针和动态数组
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(...)
部分,它应该 return 我的 returned nn 的第一个位置的地址。但是我想知道,有没有办法不在函数中使用指针而是修改 return nn;
部分,这样我仍然 return 动态数组的地址 nn
?
我想删除 *create
中的 *
您可以修改代码以设置按地址传递给函数的指针,如下所示:
void create(int n, int** res) {
*res = malloc(n*sizeof(int));
}
现在调用此函数的方式如下:
int *nn
int n = 5;
create(n, &nn);
I want to use only one parameter and be able to do it with a return
.
您可以直接 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
.
的函数有什么意义
如果你想让你的函数成为 return 一个整数数组,你需要你的函数采用 int *create()
的形式,因为数组可以被认为是指向其第一个元素的指针,即在你的情况下是一个整数。
我有一个函数可以创建一个大小为我选择的整数的动态数组。代码:
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(...)
部分,它应该 return 我的 returned nn 的第一个位置的地址。但是我想知道,有没有办法不在函数中使用指针而是修改 return nn;
部分,这样我仍然 return 动态数组的地址 nn
?
我想删除 *create
*
您可以修改代码以设置按地址传递给函数的指针,如下所示:
void create(int n, int** res) {
*res = malloc(n*sizeof(int));
}
现在调用此函数的方式如下:
int *nn
int n = 5;
create(n, &nn);
I want to use only one parameter and be able to do it with a
return
.
您可以直接 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
.
如果你想让你的函数成为 return 一个整数数组,你需要你的函数采用 int *create()
的形式,因为数组可以被认为是指向其第一个元素的指针,即在你的情况下是一个整数。