C数组和函数,如何返回?

卡龙迪莫尼奥

我有一个关于C中的数组和函数的新手问题。

假设我有这个数组:

int array1[10] = {2,4,6,3,2,3,6,7,9,1};

我写了这个函数:

int *reverseArray(int *array, int size)
{
    int *arr = malloc(size * sizeof(int));
    int i, j;

    for(i = 10, j = 0; i > 0; i--, i++) {
        arr[j] = array[i];
    }

    return arr;
}

我什至不知道它是否有效,因为如果这样做:

array1 = reverseArray(array1, 10);

我得到了错误:

分配给具有数组类型的表达式

如何将一个数组的地址分配给另一个数组?

谢尔盖·卡里尼琴科(Sergey Kalinichenko)

该函数是正确的*,并且工作正常。问题是您不能分配这样的数组:

array1 = reverseArray(array1, 10);

reverseArray 返回一个指针,因此您应该将其分配给一个指针变量:

int* reversedArray1 = reverseArray(array1, 10);

如果您希望将数据放回原位array1,请使用memcpy

memcpy(array1, reversedArray1, sizeof(array1));
free(reversedArray1);

请注意,由于您的函数用于malloc分配其返回值,因此调用者需要在使用完该内存后重新分配该内存。您需要调用free(reversedArray1)以确保分配的阵列不会造成内存泄漏。

*使用size-1在代替10for环头,因为你是无论如何传递,并允许i达到零:

for(i = size-1, j = 0; i >= 0; i--, j++)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

C ++如何从函数返回对象数组

来自分类Dev

C ++如何从函数返回对象数组

来自分类Dev

C:如何从函数返回数字数组

来自分类Dev

从C ++函数返回数组

来自分类Dev

返回数组C函数

来自分类Dev

从C#中的C ++函数返回数组和结构

来自分类Dev

如何让函数同时返回数组的索引和值?

来自分类Dev

从C中的函数传递和返回2个数组

来自分类Dev

Python中的C函数:返回数组和变量

来自分类Dev

函数可以在C中同时返回数组和变量吗?

来自分类Dev

如何在C / C ++函数中返回char *数组?

来自分类Dev

如何使C ++函数返回char数组所有排列的向量

来自分类Dev

如何将数组作为表从C函数返回给lua?

来自分类Dev

如何从C头文件中的函数返回多维字符数组

来自分类Dev

如何从C函数返回2D数组?

来自分类Dev

如何将数组从函数“返回”到c中的main

来自分类Dev

如何从C头文件中的函数返回多维字符数组

来自分类Dev

如何从C中的void函数返回动态数组?

来自分类Dev

如何从C中的函数返回2个昏暗的char数组

来自分类Dev

如何从C中的函数返回指针结构数组

来自分类Dev

如何删除函数返回的数组

来自分类Dev

使用函数返回数组-C ++

来自分类Dev

C ++-从函数返回多维数组

来自分类Dev

从C ++中的函数返回数组

来自分类Dev

从C ++中的函数返回数组

来自分类Dev

从C中的函数返回数组

来自分类Dev

C ++-从函数返回多维数组

来自分类Dev

从C ++中的函数返回数组

来自分类Dev

如何从函数传递结构和int并返回给main?C