我有一个函数,它创建一个动态数组的大小,我选择的整数。代码:
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()
的形式,因为数组可以被认为是指向它的第一个元素的指针,在你的例子中是一个整数。