Передача массива структур в функцию c ++

Извините за вопрос нуба, я просто немного запутался.
Если у меня есть массив структур в главном, которые я хочу передать функции:

struct MyStruct{
    int a;
    int b;
    char c;
    mayarray[5];
};  
MyStruct StructArray[10]; 

myFunction(StructArray[])

Перейдем к этой функции:

void myFunction(struct MyStruct PassedStruct[])
{
    PassedStruct[0].a = 1;
    PassedStruct[0].b = 2;
    // ... etc
}  

Мой вопрос, вызовет ли функция, подобная этой, изменение данных в StructArray ? Мне это нужно. Будет ли это позвонить по ссылке? Я немного запутался. Как бы я изменил его так, чтобы при передаче массива структур в функцию функция изменяла массив StructArray ? Кстати, я использую визуальную студию.
Спасибо.

18
задан Philip Potter 31 August 2010 в 21:43
поделиться

1 ответ

Когда вы передаете массив в качестве аргумента функции, массив распадается на указатель на первый элемент массива.

Итак, когда внутри вашей функции вы используете [] для доступа к элементам массива, вы действительно выполняете арифметику указателя только с вашим начальным указателем, чтобы получить элементы массива ORIGINAL.

Итак, да, вы модифицируете исходный массив. И этот ответ в значительной степени не зависит от того, какой компилятор вы используете (хотя это хорошая практика, ИМХО, указывать компилятор в вопросе, как вы это делали)

1
ответ дан 30 November 2019 в 07:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: