Я только начал изучать указатели в c. прямо сейчас я пытаюсь понять указатели в структурах. я не думаю, что я правильно их интерпретирую. ниже приведен пример, приведенный в учебнике для указателей в структурах.указатели в структурах в c
#include<stdio.h>
int main(void)
{
struct intPtrs
{
int *p1;
int *p2;
};
struct intPtrs pointers;
int i1=100,i2;
pointers.p1=&i1;
pointers.p2=&i2;
*pointers.p2=-97; //here
printf ("i1 = %i, *pointers.p1 = %i\n", i1, *pointers.p1);
printf ("i2 = %i, *pointers.p2 = %i\n", i2, *pointers.p2);
return 0;
}
мой вопрос в приведенном выше коде, поскольку pointers
объявлен как тип struct intPtrs
, следует не выше код выглядеть pointers.(*p1) = -97;
. Кроме того, я знаю, что это неправильно, потому что это дает мне ошибку. но я не могу понять, почему это *pointers.p1
.
Вышеупомянутый вопрос может показаться наивным, но, пожалуйста, я стараюсь изо всех сил разобраться в своих концепциях. поэтому любая помощь в попытке объяснить это как можно проще, была бы очень полезной для меня.
Какая ошибка дает вам это? – EOF
Указатель 'p1' является членом структуры и вы получаете доступ к нему как' pointers.p1'. Чтобы разыменовать его, вы используете оператор '*', например '* (pointers.p1)'. Учитывая приоритет оператора, скобки не нужны. –
Нет никакой разницы между указателем в 'struct' и указателем в другом месте. У вас возникла проблема с преувеличением оператора. – Olaf