Я всегда хотел знать, в чем разница между тем, как компилятор видит указатель на структуру (в C предположим) и сама структура.
struct person p;
struct person *pp;
pp->age
, я всегда думаю, что компилятор делает: "значение pp + смещение атрибута" возраст "в структуре".
Но что он делает с person.p
? Это было бы почти то же самое. Для меня "программист", p не является адресом памяти, его как "сама структура", но, конечно, это не то, как компилятор справляется с этим.
Я предполагаю, что это скорее синтаксическая вещь, а компилятор всегда делает (&p)->age
.
Я прав?