Дано:
typedef struct Person_struct { char name[10]; int age; } Person;
Person bob;
void makePerson(Person *human) {
strcpy((*human).name, "Bob Bee");
(*human).age = 36;
}
Разыменование затем принимает общую форму:
(*variable).member //variable could be bob, member could be age
Я знаю, что оператор доступа к элементу .
имеет приоритет над *
, поэтому мы используем скобкисначала разыменовать переменную. Я действительно не понимаю, почему это необходимо.
На самом деле кажется более интуитивным, что *variable.member
сначала будет работать с оператором доступа к элементу, чтобы получить указатель на struct_type, а затем .member
добавит sizeof(member)
чтобы получить локацию, которую нужно защитить.
Но правильная форма (*variable).member
очень неинтуитивна. Неясно, какое «значение» на самом деле возвращается (*variable)
, и неясно, как будет получен доступ к члену из того, что возвращается.
Мой вопрос:
Что происходитв памяти, когда используется (*variable).member
, а не *variable.member
?
Я видел это , но он не ответил на мой вопрос.