Ваш синтаксис для передачи массива по ссылке неверен.
Пожалуйста, посмотрите рабочий код ниже.
#include <iostream>
#include <cstring>
using namespace std;
struct a{
int name;
};
void input(a (&array1)[10]){
for(int i=0;i<10;i++){
array1[i].name=i+1;
}
}
void print(a (&array1)[10]){
for(int i=0;i<10;i++){
cout<<array1[i].name<<endl;
}
}
int main(){
a array1[10];
input(array1); // make sure you simply pass the array name
print(array1);
}
Попробуйте сами
В соответствии с синтаксисом круглых скобок языка, которые заключают в себе массив1, как в (&array1)
, необходимо. Если вы не используете их, вы просто передаете массив ссылок , а не референс массиву .
array1[10]
- это 10-й элемент массив (который на самом деле в вашем случае не существует, это просто доступ за пределы массива), вместо этого вам нужно передать адрес первого элемента массива, который совпадает с именем массива, т.е. имя массива распадается на указатель.