Я только начинаю изучать C, и это довольно запутанно. В частности, меня смущают указатели. Я начинаю думать об этом, но меня смущает, почему эта конкретная вещь не работает так, как я думала.
int num1 = 0, num2 = 1000;
int *pA = &num1, *pB = &num2;
pA = pB;
*pA = 42;
printf("%d\n", num1);
printf("%d\n", num2);
Я знаю, что с точки зрения указателей в моем коде, '*' получает доступ к значению, сохраненному в значении, на которое ссылается указатель. В случае кода ниже, «pA» ссылается на «num1».
Без использования «*» я также знаю, что «pA = pB» говорит о том, что указатель переменной «pA» теперь имееттот же адрес, что и «pB». Это будет означать, что «num1» имеет значение «1000». Затем значение по адресу, на который указывает «pA», меняется на «42». За исключением того, что это не так;«num1» печатает «0» и «num2» печатает 1000.
Пожалуйста, кто-нибудь может объяснить, что идет не так?