1
我試過尋找答案/查看C庫的指針,但不能確定正確的解決方案。我的問題涉及到更改函數的參數。我一直在閱讀指針/函數,根據我的理解,如果函數接受(int x1),那麼當函數完成x1時,函數外部的x1保持不變。但是,如果你傳入一個int * x1,那麼它就會改變。函數參數在C中的變化
我一直在嘗試用它,我已經使用這個帶有幾分方法試過......
void sorting(int *arr, int size) {
int *i, *j, temp;
int *len = arr + size - 1;
for(i = arr; i < len; i++) {
for(j = i + 1; j <= len; j++) {
if(*j < *i) {
temp = *i;
*i = *j;
*j = temp;
}
}
}
int k;
for(k = 0; k < size; k++) {
printf("k: %d, arr[k]: %d \n", k, *(arr + k));
}
}
什麼,這將打印是一個完全排序的列表。然而,在我的主要功能,如果我打電話給這個...
int main() {
int temp[5] = {0, 2, 1, 3, 1};
int *p = &temp[5];
sorting(pa, 5);
print the values of pa...
}
然後,列表仍然未排序,如果打印出pa的值。
如果此問題已解決,是否有人可以將該問題鏈接,我將刪除該帖子。
感謝關於外邊界索引的尖端。你認爲你可以澄清爲什麼我的* arr在函數中被排序,但在主函數中,在進行排序函數調用之後,它沒有排序。 – Steve 2015-02-08 23:44:28
@Someoldlady你的意思是你在解決了無界限訪問後仍然存在這個問題? – juanchopanza 2015-02-08 23:48:04
我意識到除了我的主函數出界外,還有一個小錯誤。它工作得很好,非常感謝! – Steve 2015-02-08 23:51:09