Что такое & у? Является ли это адресом в памяти переменной указателя y?
Да. У вас могут быть указатели на указатели.
int x = 357;
int *y = &x;
int **z = &y;
Какая переменная указателя y? Сохраняет ли он адрес переменной x?
Да. В основном, это целочисленный тип, который (как его значение) содержит адрес «x».
Что такое & x? Является ли это адресом в памяти переменной x или является ее адресом, 1025?
Адрес переменной, который вместе с целым числом также хранит значение.
Какая переменная x? Это адрес его значения, 1025?
Это место в памяти нескольких байтов, содержащих данные. То, как интерпретируются данные, зависит от кода, который его использует. С целыми числами данные предназначены для представления числа (например, 1025), но его можно так же легко манипулировать, как если бы это было что-то другое, например пара символов или поплавок. Данные в памяти - это просто данные в памяти - что дает смысл, так это то, как он используется.
Что такое * y? Это адрес 1025 = переменная x?
1025 - это всего лишь данные, хранящиеся по адресу «x», значение, хранящееся в этих байтах памяти, вообще не изменяет местоположение «x». Когда «x» создается, его местоположение в памяти (на протяжении всего срока его службы) не изменяется.
So * y is x. * y 'dereferences' адрес, хранящийся в 'y' (адрес x), и поэтому вы работаете в блоке памяти, на который ссылаются как «x», так и «* y».
При печати & у отображает адрес у, печать & х отображает адрес х, но печать х/* у просто печатает 1025, как бы напечатать адрес 1025?
Печать x/* y должна печатать 1. x = 1025. *y = 1025. 1025/1025 = 1
1025 не имеет адреса. 1025 - это куча бит в нескольких байтах. 1025 - это последовательность бит (которую ваш код дает значение, но сам по себе не имеет смысла), хранящийся в нескольких байтах, который находится по адресу, хранящемуся в 'x' и '* y'.
Если мы предположим, целые четыре байта памяти (32-битные ОС и аппаратное обеспечение, скажем), то у вас есть четыре байта, в некотором случайном месте в памяти:
[01000100] [1101010] [00101001] [11010101] (gibbish binary for illustration)
Двоичных биты хранятся в тех четыре байта не означает вещь, пока ваш код не примет решение как интерпретировать значение этих бит.
'x' is эти четыре байта. 1025 преобразуется в двоичный код и хранит в эти четыре байта. Адрес «x» - это адрес этих четырех байтов. «y» - это кусок байтов, в котором вы храните адрес «x». '* y' позволяет вам работать с байтами, в которых «y» хранит адрес. Доступ к * y дает те же байты, на которые указывает x.
Что вы пробовали? Вы пишете какой-нибудь C-код (например, скомпилированный с помощью 'gcc -Wall -g'), а затем шаг за шагом его используете какой-то отладчик (например,' gdb')? Покажите гораздо больше своего кода на C. –
Для вас большой вопрос, цифры не имеют адресов. Вы имеете в виду, где хранится 1025 (в x)? – dcaswell
Это не то, как работают указатели. Я предлагаю вам прочитать хорошую книгу C. Мы здесь не для того, чтобы научить вас всему языку, а помогать с конкретными вопросами программирования. –