Извините за вопрос нуба, я просто немного запутался.
Если у меня есть массив структур в главном, которые я хочу передать функции:
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
? Кстати, я использую визуальную студию.
Спасибо.
Когда вы передаете массив в качестве аргумента функции, массив распадается на указатель на первый элемент массива.
Итак, когда внутри вашей функции вы используете [] для доступа к элементам массива, вы действительно выполняете арифметику указателя только с вашим начальным указателем, чтобы получить элементы массива ORIGINAL.
Итак, да, вы модифицируете исходный массив. И этот ответ в значительной степени не зависит от того, какой компилятор вы используете (хотя это хорошая практика, ИМХО, указывать компилятор в вопросе, как вы это делали)