私はC++を学ぶために非常に簡単なコードを作った。そして私は、スタック上に作成された配列を別の関数に送ると、関数がソース配列を変更するという発見をしました。これは他の変数とは異なります。 intや何かのように。値として配列をパラメータとして送信しますか?
なぜそれはそうですか?
コード:
void ByValue(int arr[], int size)
{
for (int i = 0; i < size; i++)
{
arr[i] += 1;
}
}
void SimpleArray()
{
int arr[3];
for (int i = 0; i < 3; i++)
{
arr[i] = i+1;
cout << "Element [" << i << "] is " << arr[i] << endl;
}
cout << endl;
ByValue(arr, 3);// <-- should be by value
for (int i = 0; i < 3; i++)
{
cout << "Element after change [" << i << "] is " << arr[i] << endl; // <-- this shouldent change ?
}
cout << endl;
}
出力を与える:それは値によって渡された場合
Element [0] is 1
Element [1] is 2
Element [2] is 3
Element after change [0] is 2
Element after change [1] is 3
Element after change [2] is 4
第2の出力は 、最初と同じでなければならないが、今私が使用みたいですポインタ?
値によってアレイを渡すために 'std :: array'を使用してください –