C++ C++;:我做错了什么?

C++ C++;:我做错了什么?,c++,pointers,C++,Pointers,我刚刚写了一段代码来合并2个排序数组。合并工作正常。但是,当我尝试打印排序数组时。我得到的只是一堆重复的1 我的代码: #include <iostream> using namespace std; #define G_N_ELEMENTS(arr) ((sizeof(arr))/(sizeof(arr[0]))) class mergeArray{ public: int *A,*B,*C; mergeArray(int *A,int *B) {

我刚刚写了一段代码来合并2个排序数组。合并工作正常。但是,当我尝试打印排序数组时。我得到的只是一堆重复的1

我的代码:

#include <iostream>
using namespace std;
#define G_N_ELEMENTS(arr) ((sizeof(arr))/(sizeof(arr[0])))

class mergeArray{
    public:
    int *A,*B,*C;
    mergeArray(int *A,int *B)
    {
        this->A = A;
        this->B = B;
    }
    void  mergeArrays(int sizeA,int sizeB)
    {
        int newSize = sizeA+sizeB;
        C = new int[newSize+1];
        int i=0,j=0,k=0;
        while(k<newSize)
        {
            if(*(A+i)<*(B+j))
            {
                *(C+k)=*(A+i);
                if(i<sizeA)i++;
            }
            else
            {
                *(C+k)=*(B+j);
                if(j<sizeB)j++;
            }
            k++;
        }
        *(C+newSize) = -1;
    }
    void printMergeArray()
    {
        int i=0;
        while(*(C+i)!=-1)
        {
            cout<< *(C+i)<<endl;
        }
    }

};
int main(int argc, char **argv)
{
    int A[5]={1,3,5,7,9};
    int B[5]={2,4,6,8,10};
    mergeArray mm(A,B);
    int sizeA = G_N_ELEMENTS(A);
    int sizeB = G_N_ELEMENTS(B);
    mm.mergeArrays(sizeA,sizeB);
    mm.printMergeArray();
    return 0;
}
#包括
使用名称空间std;
#定义G_N_元素(arr)((sizeof(arr))/(sizeof(arr[0]))
类合并数组{
公众:
int*A、*B、*C;
合并数组(int*A,int*B)
{
这->A=A;
这->B=B;
}
void合并数组(int-sizeA,int-sizeB)
{
int newSize=sizeA+sizeB;
C=新整数[newSize+1];
int i=0,j=0,k=0;

虽然(k我知道您已经从其中一条评论中得到了答案-您没有增加
printMergeArray
中的索引

我回答这个问题的动机是提出一些风格上的变化:

我认为
while
表单循环

while(k<newSize)
{
    k++;
}

<代码> >(在KEX> PrimDigiRayRe>代码中不要增加变量<代码> i <代码>。该死的,抱歉打扰了。您喜欢指针算法<代码> *(C+I)< /C> >索引>代码> C[i] < /代码>有什么特殊原因吗?如果这不是一个奇怪的“我不允许使用标准C++的东西”在作业中,我强烈建议您使用std::vector
for( k = 0; k < newSize; ++k)
{
}
*(C+k)=*(A+i);
if(i<sizeA)i++;
assert(i < sizeA);
*(C+k)=*(A+i);
i++;
*(C+k)=*(B+j);
if(j<sizeB)j++;
assert(j < sizeB);
*(C+k)=*(B+j);
j++;