我有一个函数可以创建一个与我选择的整数大小相同的动态数组。代码:
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
的地址?
编辑我很抱歉没有正确澄清一件事,我想要做的就是删除`创建中的*
答案 0 :(得分:5)
您可以修改代码以设置通过地址传递到函数中的指针,如下所示:
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
功能。
答案 1 :(得分:0)
你可以这样做:
int *create(int n)
{
return malloc(n*sizeof(int));
}
这样您在create()
函数中不需要临时变量。但我没有看到制作一个仅调用malloc
的函数的重点。
如果希望函数返回一个整数数组,则需要使用int *create()
形式的函数,因为数组可以被认为是指向其第一个元素的指针,在您的情况下是一个整数。