Указатели на символы и указатели на Int передаются в функции

Мне показалось, что я понимаю указатели, но я думаю, есть нюанс в том, как они трактуются по-разному, что я не совсем следую. Когда я передаю целочисленный указатель или адрес целого числа в showInt, он выводит тот же адрес памяти, что и вне функции. Тем не мение. Когда я передаю следующий указатель на showChar;

char* value = "One";
showChar(value);

Адрес первого элемента внутри функции отличается от адреса вне функции. Я понимаю, что это поведение согласуется с передачей по значению, и что копия указателя создается внутри функции, однако у меня сложилось впечатление, что копия указателя все еще содержит тот же адрес. Почему это отличается от работы с указателями на char? Если указатель на символ просто хранит адрес первого элемента строкового литерала, то почему указатель в функции не указывает на ту же самую область памяти, а вместо этого указывает на новую область в памяти? Это говорит мне о том, что он не копирует указатель на символ, но создает новый указатель на символ и присваивает ему значение, на которое указывает исходный указатель. Если так, я не понимаю почему.

Я понимаю, что вы можете получить доступ к адресу указателя в функции, передав вместо него указатель-указатель или ссылку-указатель, но почему это так, меня все еще смущает.

Передача указателя на символ;

void showChar(char* name){

 cout << name << endl;
 cout << &name << endl;
}

Передача указателя на int;

void showInt(int* num){

 cout << num << endl;
 cout << *num << endl;
}

Ответы на вопрос(2)

Ваш ответ на вопрос