Указатель - это адрес в памяти.
"pointer"
- это C-строка в памяти, 8 байтов для букв и завершающий NULL-байт. str1
- указатель на байт первой буквы 'p'
.
printf("%p", str1)
печатает значение самого указателя, то есть адрес памяти (в данном случае 0000000000409001
).
printf("%s", str1)
будет печатать pointer
, содержимое C-строки в расположении str1
.
cout << str1 << endl
также печатает содержимое C-строки,Это поведение по умолчанию для указателя типа char*
, поскольку они обычно являются строками.
cout << static_cast<void*>(str1) << endl
будет снова печатать адрес указателя.