Как я могу заставить структуру сохранять значение, которое я присвоил через функцию?

#c #struct #pass-by-reference #function-declaration

#c #структура #передача по ссылке #объявление функции

Вопрос:

По сути, я пытаюсь присвоить значение структуре с помощью функции, чтобы значение, которое я присвоил, было таким же в main() впоследствии.

Структура

 struct member{
  char name;
  int age;
}m1;


 
 void assigntostruct(struct member str,int age){

str.age = age;


main(){
int age=10;
assigntostruct(m1,age);
printf("%d",age);

}
 

Я пробовал это так, значение «age» передается в str.age, но затем, когда я печатаю, оно возвращает 0.

Комментарии:

1. Вам не хватает хотя бы закрывающей фигурной скобки для assigntostruct . Можете ли вы опубликовать код, который хотя бы компилируется?

2. Нет необходимости переходить m1 к функции, поскольку она объявлена в глобальной области видимости, из которой она уже доступна assigntostruct() , просто используйте m1.age = age; , и все готово.

Ответ №1:

Вам нужно передать объект типа структуры по ссылке.

В языке Си термин «передача по ссылке» означает косвенную передачу объекта через указатель на него.

Таким образом, функция может выглядеть следующим образом

 void assigntostruct( struct member *str, int age){
    str->age = age;
    //...
}
 

и может быть назван как

 assigntostruct( amp;m1, age );
printf("%d", m1.age);