в строке:
int x;
Вы выделяете кусок памяти размером «int».
для этого объяснения мы примем размер int равным 4 байта (это может быть не 4 байта).
так после строки "int x;" в памяти 4 байта, назначенных «х».
значение "x" находится внутри этих 4 байтов:
например, если x = 4, он будет выглядеть в памяти следующим образом:
[0, 0, 0, 4] или в двоичном виде [0000000, 00000000, 00000000, 00000010].
(В реальной жизни это также может быть [4, 0, 0, 0], но я не буду вдаваться в подробности).
, поэтому VALUE из x равно 4.
Но допустим, я хочу адрес "х", где он находится в памяти.
Здесь оператор «&» вступает в игру, используя этот оператор, я запрашиваю адрес из x.
, поэтому, если [0, 0, 0, 4] начинается с места "0x12341234" в памяти, & x вернет это (0x12341234).
Теперь, если я хочу сохранить адрес в переменной, тип этой переменной не "int", но это то, что указывает на адрес из int, который помечается как "int *".
Итак:
int x = 4; // <- выделяет память 4 байта и заполняет ее значение числом 4.
int * pointer_to_x = & x; // <- pointer_to_x указывает на адрес, где x находится в памяти. </p>
если есть метод, объявленный так:
void mymethod (int x), чем мы передаем VALUE из x, поэтому метод называется mymethod (x).
если есть метод, объявленный так:
void mymethod (int * x), чем мы передаем указатель на адрес x, поэтому метод называется mymethod (& x).
Это действительно верхушка айсберга, и я действительно старался сделать его максимально простым, поэтому, если у вас есть дополнительные вопросы, просто задавайте!
Существуют также термины, называемые «по значению» и «по ссылке», но вам все же необходимо лучше понять разницу между int и int *, а не «по значению» и «по ссылке» будет вполне естественно.