我做了一個非常簡單的代碼,學習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
第二輸出應是相同的,第一,如果它是由值, 通過,但現在是像我使用的指針?
使用'std :: array'實現按值傳遞數組 –