#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);