Указатель - это просто число. Это число соответствует тому, где в оперативной памяти вашего компьютера хранится значение соответствующей переменной.
int theAnswer = 42;
int *pointer = &theAnswer;
std::cout << pointer << '\n';
/*
* this will print where in memory `theAnswer` is stored,
* it'll just look like some random number. Try it out!
*/
Итак, в вашем примере (2) PrtLog
является указателем. Ссылка также является указателем, но C ++ как бы «скрывает» ее.
(3) Помните, что указатель - это просто число. Поэтому, если вы хотите работать со значением указателя, а не выполнять математические вычисления с самим указателем (чего делать не следует ig), вам нужно каким-то образом «проследить» за этим числом до места, где хранится значение. Это то, что делает разыменование. Он «следует» за указателем, чтобы получить его значение, и позволяет вам делать такие вещи, как вызывать функции или изменять его.
// make an integer variable
int theAnswer = 42;
int *pointer = &theAnswer;
std::cout << "Original: " << theAnswer << " Pointer: " << *pointer << '\n';
// prints "Original: 42 Pointer 42"
*pointer = 41;
std::cout << "Original: " << theAnswer << " Pointer: " << *pointer << '\n';
// prints "Original: 41 Pointer 41"
(4) Иногда вы просто не можете получить доступ к оригиналу, как с выделение памяти во время выполнения или, если вы хотите создать метод для изменения переменной, et c. В C ++ многое из этого скрыто в стандартной библиотеке с такими вещами, как ссылки и классы, но иногда это все же появляется. Хотя, если вы работаете с необработанными указателями (в отличие от ссылок или классов RAII) в C ++, у вас должна быть веская причина для этого, утечка памяти очень проста.
// you can only access this variable though the pointer
int *dynamic = new int;
*dynamic = 42;
std::cout << *dynamic << '\n';
delete dynamic;
(5) Кажется, это тот же вопрос, что и 4, но я могу интерпретировать его неправильно.
Надеюсь, это ясно. Если у вас есть другие вопросы, не стесняйтесь комментировать, и я постараюсь ответить на них изо всех сил, я буду рад помочь другому Бенджамину!