#c #pointers #struct #typedef
#c #указатели #структура #typedef
Вопрос:
Допустим, у меня есть некоторые typedef struct {int b;} some_t;
и указатель a
на такую структуру. Тогда почему
(*a).b = 5;
не то же самое, что
some_t c = *a;
c.b = 5;
?
Ответ №1:
Во втором, c
является копией *a
, а c.b
является копией (*a).b
.
c.b = 5
изменяет копию, а не оригинал.
Комментарии:
1. Насколько тогда уместно выбрать ‘c’ в качестве имени. 😉 Теперь все ясно, спасибо!
2. Я думаю, вы имеете в виду, что c.b эквивалентно (* a).b , а не копия.
3. @Daniel: Нет, это копия значения.
4. Но (*a).b != c.b, но он имеет такое же поведение с точки зрения доступа к элементу… где, поскольку я прочитал ваше утверждение как противоположное, следовательно, инструкции эквивалентны, хотя и структурам по разным адресам. Бах, английская семантика…