我是C++新手(每個新手XD的常用介紹)。那麼,我正在開發一個程序,當一個意外的行爲出現! 我追蹤了我的程序中的變量和數組,直到我成功地確定了執行此行爲的代碼模式!更改函數內數組元素的值
下面是我所使用的追蹤是如何工作的:
#include <iostream>
using namespace std;
void showArray(int arr[], int n)
{
for(int i = 0; i < n; i++) cout << arr[i] << " ";
cout << endl;
}
void someFunction(int x[], int n) // changes the original values
{
x[0] = 2;
x[1] = 1;
x[2] = 0;
}
void someFunction2(int * x, int n)
{
x[0] = 2;
x[1] = 1;
x[2] = 0;
} // changes the original values
int someFunction3(int x[], int n)
{
x[0] = 2;
x[1] = 1;
x[2] = 0;
return 0;
} // changes the original values
int someFunction4(int x[], int n)
{
x = new int[n];
x[0] = 2;
x[1] = 1;
x[2] = 0;
return 0;
} // does NOT change the original value
int main(void)
{
int * y = new int[3];
y[0] = 0;
y[1] = 1;
y[2] = 2;
showArray(y, 3);
someFunction4(y, 3);
showArray(y, 3);
return 0;
}
我覺得跟評論的代碼說明問題出在哪裏,但這裏更多的信息: 有4個功能,即someFunction ,一些功能2,一些功能3,一些功能4。 有一個數組y,它的值爲0,1,2。所有函數都會更改原始數組的值。也就是說,在someFunctionX調用之後,main函數中y的元素比調用函數之前發生的變化要多。
我的問題是:爲什麼someFunction4是唯一不改變值的函數?
在此先感謝。併爲我的壞英語感到抱歉。
謝謝。你的回答很明確。那麼,如何讓舊數組獲得新的價值? – joker
擺脫賦值'x = new int [n];' – GraphicsMuncher
如果我想從函數內改變數組大小,該怎麼辦? – joker