我正在學習如何實現mergesort的入門C++課程。我想通過在代碼中的每一步走我自己,但有一件被絆倒了我,讓指針算術用作C++函數的參數時發生了什麼?
1. void mergeSort(int *x, int len){
2. if (len>1){
3. int newLen=len/2;
4. mergeSort(x, newLen);
5. mergeSort(x+newLen,len-newLen);
6. int *newSeq;
7. newSeq=new int[len];
8. mTwoSeq(x, x+newLen, newSeq,newLen, len-newLen);
9. for(int i=0;i<len;++i){
10. x[i]=newSeq[i];
11. }
12. delete[] newSeq;
13. }
14. }
什麼是在第5行發生了什麼?我的理解是,當我們調用「x + i」,其中x是一個指針數組時,我們要求計算機給我們存儲第i條數據的內存地址。如果是這種情況,我不完全確定這是否適合這裏。如果有人知道該函數調用發生了什麼,我很高興知道。謝謝!
'x'不是一個指針數組。它是一個指向'int'的指針,它可能指向或不指向數組的一個元素。 – juanchopanza