scanf
требует, чтобы вы передали адрес пространства памяти, в котором вы хотите сохранить результат, в отличие от printf
, для которого требуется только значение (это не должно волновать где значение находится).Чтобы получить адрес переменной в C, вы используете оператор &:
int a;
scanf("%d", &a);
Значение: прочитать целое число в указанный мной адрес, в данном случае адрес a.То же самое касается членов структуры, независимо от того, находится ли сама структура в стеке или в куче, доступ к которой осуществляется по указателю и т. Д .:1014 * плюс смещение члена в структуре.