#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函數中的數組,並得到了正確的輸出,但是當我指針返回數組,然後嘗試打印結果,我認爲它是指向每個陣列點的指針?我不太確定。返回指針數組沒有給出預期輸出在C
這將返回:
大小:5
12341002,1,-10772231820,-1077231812,1074400845,
這是我敢肯定,一個經典的錯誤已被問在計算器上之前。您正在返回一個指向內部函數分配的內存的指針,該函數將消失。 Go語言足夠聰明,可以完成這項工作並將該內存移動到堆上,但C無法做到這一點。你必須自己爲這個數組設置malloc空間。 –
@RayToal:它已被問過1000次以上...是的,這是一個非常基本的錯誤,不是從語言的基本概念開始。就像一本好C書一樣。 – Olaf