我正在学习如何实现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