0
這是我的一個函數,將排序傳過來的指針數組代碼:這個C排序函數有什麼問題?
#include <stdlib.h>
#include <stdio.h>
void sortArray(int * numbers, unsigned int n, unsigned int descendFlag);
int main(int argc, char ** argv) {
int numArray[4] = {14, 4, 16, 12};
int * arrayPtr = numArray;
int x;
for (x = 0; x < 4; x++) {
printf("%i\n", numArray[x]);
}
printf("\n\n\n");
sortArray(arrayPtr, 4, 1);
for (x = 0; x < 4; x++) {
printf("%i\n\n", numArray[x]);
}
printf("\n\n\n");
sortArray(arrayPtr, 4, 0);
for (x = 0; x < 4; x++) {
printf("%i\n\n", numArray[x]);
}
return 0;
}
void sortArray(int * numbers, unsigned int n, unsigned int descendFlag) {
int i, j;
for (i = 0; i < n; i++) {
for (j = i + 1; j < n; j++) {
// Ascending
if (descendFlag != 1 && numbers[i] > numbers[j]) {
int temp = numbers[i];
numbers[i + 1] = numbers[i];
numbers[i] = temp;
}
if (descendFlag == 1 && numbers[i] < numbers[j]) {
int temp = numbers[i];
numbers[i + 1] = numbers[i];
numbers[i] = temp;
}
}
}
}
這裏是出把這個程序:
14
4
16
12
14
14
14
12
14
14
14
14
什麼錯嗎?我也正確使用指針?
我是C的新生,指針太混亂了。我不知道我是否應該使用&
或*
來訪問作爲指針傳遞的變量。我做錯了什麼?