#include <stdio.h>
int* createReverseArray(int *array, int size)
{
int i;
int newArray[size];
for(i=size-1; i>=0; i--)
{
newArray[i] = array[size-i-1];
}
return newArray;
}
int main(void) {
int myArray[] = {1,2,3,5,1};
int myArray2[] = {1,2,3,4,2,1};
int i;
int size = sizeof(myArray)/sizeof(int);
printf("Size: %d\n", size);
int* newArray = createReverseArray(myArray, size);
for(i=0; i<size; i++)
{
printf("%d, ", newArray[i]);
}
return 0;
}
我在createReverseArray函数中打印了数组并获得了正确的输出,但是当我将指针返回到数组然后尝试打印结果时,我认为它打印指向每个数组点的指针?我不太确定。
返回:
尺寸:5
12341002,1,-10772231820,-1077231812,1074400845,
答案 0 :(得分:2)
newarray
是一个自动局部变量。一旦函数返回它将不再存在。返回指向自动局部变量的指针调用undefined behaviour,在这种情况下可以预期没有任何好处。
您可以动态分配内存,然后返回指针
int *newArray = malloc(sizeof(int)*size);