函数返回指针和动态数组



我有一个函数,它创建一个动态数组的大小,我选择的整数。代码:

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()的形式,因为数组可以被认为是指向它的第一个元素的指针,在你的例子中是一个整数。

相关内容

  • 没有找到相关文章

最新更新