Пытаюсь разобраться в указателях. Увидел такие примеры, но не нашёл что они делают. Зачем используются эти варианты?
*int *pa;int *(*pa);В первом случае будет ошибка компиляции. Второму примеру аналогична вот эта запись.
int ** pa;
то есть так называемый "Указатель на указатель на int". Работает он по принципу обычного указателя, то есть вы можете его разыименовать для получения значения, которое храниться по данному адресу. А поскольку в "первой звездочке" храниться еще один указатель, то при разыименовании Вы получите адрес переменной
int pa
Для получения значения из "Указателя на указатель", его нужно разыменовать дважды вот так.
int a = 5;
int *pa = &a;
std:cout << *pa;
Обратите внимание, что инициализировать указатель на указатель в одну строку нельзя.
//Нельзя вот так
int a = 5;
**pa = &&a;
Это связано с тем, что оператор & требует в качестве значения I-value, но в этом случае значение r-value.
Однако если поддерживается С++11 можно разыменовать указатель на указатель через null
int **pa = nullptr;
В первом и втором случае выведется число 5.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости