PowerPoint Online: надстройка не загружается в режиме слайд-шоу

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

cout << (void *) terry;

(или используйте бросок const void *, если вы беспокоитесь о том, чтобы отбросить созвездие, что-то, что не является проблемой в данном конкретном случае).


Если вы скорее пурист, чем прагматик, вы также можете использовать C ++ static_cast по строкам:

cout << static_cast <const void *> (terry);

, хотя в этом конкретном случае это необязательно, приведение к void * будет работать нормально. Следующий пример кода показывает все эти параметры в действии:

#include <iostream>
int main (void) {
    const char *terry = "hello";
    std::cout << terry << '\n';
    std::cout << (void *) terry << '\n';
    std::cout << (const void *) terry << '\n';
    std::cout << static_cast<const void *> (terry) << '\n';
    return 0;
}

вывод (адрес может быть другим в вашей среде):

hello
0x8048870
0x8048870
0x8048870

Обратите внимание, что при использовании кнопки static_cast, вы должны убедиться, что вы не пытаетесь отбросить константу с помощью static_cast <void *> (это для const_cast). Это одна из проверок, выполненных более новыми C ++-переходами, и старинный стиль не имеет этого ограничения.

0
задан hzsheikh 5 March 2019 в 04:54
поделиться