отображение адреса переменной char в c ++ с помощью указателей?

как мы можем отобразить адрес переменной char? Я нашел решение, используя приведение типов путем кулачного преобразования его в int или float или void и т. Д., А затем отображая адрес с помощью указателей. Но есть ли другая альтернатива конкретному решению без приведения типов? используя указатели, такие как

char var = 'a';
char* ptr;
ptr = &var;
cout << ptr;

но в этом случае даже указатель указывает на адрес var, но отображает значение var. Зачем? и если это так, то как мы можем получить адрес var с помощью указателей?
без использования типа литья

cout << "Address of var = " << static_cast<void*>(&var)  << endl;

или мы должны перегрузить любой оператор для конкретной проблемы?

1

Решение

Единственная причина, по которой вам нужно написать актерский состав, заключается в том, что std::ostream имеет специальную перегрузку для char * который предполагает что данный указатель указывает на первый элемент массива символов с нулевым символом в конце и будет радостно пытаться пройти этот массив, пока он не достигнет нуля.

К сожалению, это означает, что вы не можете просто передать адрес одного символа и напечатать значение этого адреса, поэтому вам нужен приведение. Для всех других (не символьных) указателей, std::ostream уже печатает числовое представление значения указателя.

Там нет ничего, что вы можете «сделать», но на самом деле это не проблема, так как вы уже нашли решение. Если вы находитесь в общей настройке и хотите напечатать указатели объектов, просто добавьте приведение к void * и это будет работать для всех типов ввода. Поведение std::ostream является результатом выбора дизайна для удобства, позволяющего легко работать подавляющему большинству вариантов использования, за счет того, что ваш конкретный вариант использования будет более подробным для написания.

7

Другие решения


По вопросам рекламы [email protected]