我有一个关于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);
我得到了错误:
分配给具有数组类型的表达式
如何将一个数组的地址分配给另一个数组?
该函数是正确的*,并且工作正常。问题是您不能分配这样的数组:
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] 删除。
我来说两句