我遇到了一些非常簡單的情況:將數組作爲指針傳入函數並返回它們。我以爲我有指點,但我無法理解它。傳遞指針數組並將它們打印出來的問題
下面的代碼:
int* getLottoDraw();
void printArray(int * array);
int find_matches(int * array1, int * array2);
int main(int argc, char *argv[])
{
int * lotteryDraw = getLottoDraw();
printArray(lotteryDraw);
system("PAUSE");
return 0;
}
int* getLottoDraw(){
int draw[6];
int i;
srand(time(NULL));
for (i = 0; i < 6; i++) {
int r = rand() % 49;
draw[i] = r;
}
return draw;
}
void printArray(int *array){
int i;
for (i = 0; i < 6; i++){
printf("%i ", array[i]);
}
}
一個示例輸出是 「3 2047 4614546 0 25 45」。不是什麼希望。
'getLottoDraw()'返回一個局部變量的地址。使用'int * draw = malloc(6 * sizeof(int));'而不是'int draw [6];'。 – mch 2015-03-13 15:43:22