1

我的桌子有点问题。

    int najmniejszy_dzielnik(int m){
                cout<<"Array["<<m<<"] = "<<Array[m]<<endl;
                return Array[m];
    }

    int* czynniki_pierwsze(int m){
            int temp, size, i, helper;
            for(temp=m, i=1; 1 < temp; i++){
                helper=najmniejszy_dzielnik(temp);
                cout<<"test1, array[5] = "<<Array[5]<<endl;

                Array2[i]=helper; //------------------------------problem here
                cout<<"test2, array[5] = "<<Array[5]<<endl;

                temp/=helper;
                cout<<"test3, array[5] = "<<Array[5]<<endl;

                }
                Array2[0]=i;
                return Array2;
    }

这段代码给了我错误的结果,所以我创建了 cout“test1”、“test2”和“test3”,我发现了这个:

Array[225] = 3
test1, array[5] = 5
test2, array[5] = 5
test3, array[5] = 5
Array[75] = 3
test1, array[5] = 5
test2, array[5] = 3
test3, array[5] = 3

更改值对Array2[i]有影响Array[ ]

这是怎么发生的?

4

3 回答 3

1

造成这种影响的原因是 Array[ ] 和 Array2[ ] 使用了相同的堆栈。我应该使用指针。

于 2013-03-20T09:15:05.913 回答
0

你写了:

    for(temp=m, i=1; 1 < temp; i++)

是不是意味着:

    for(temp=m, i=1; i < temp; i++)
于 2013-03-20T01:48:38.553 回答
0

实际上,您的代码似乎没有任何问题。请在此处查看http://codepad.org/igdzwNnE。可能是外部函数同时编辑“数组”

于 2013-03-20T02:30:58.810 回答