Я сделал очень простой код, чтобы узнать C++. И я сделал открытие, что, когда я отправляю массив, созданный в стеке, другой функции, funtion меняет исходный массив - это не так с другими переменными. Как 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' для достижения передачи arays по значению –