2015-06-14 4 views
-2

Что происходит после запуска этого кода?C++ указатели char

char* c= "abc"; 
    void* p= &c; 
    printf("%s %s", *(char**) p, *(char*) p); 

Так что c указывает на строку и p тоже. Но я не понимаю, что все * действительно делает. Кто-то может мне объяснить?

+0

Ошибка компилятора, вот что происходит. –

+0

@ DanielKamilKozar [Не совсем] (http://ideone.com/Hmt3Ev) –

+0

@ πάνταῥεῖ - хорошо, предупреждение. :) –

ответ

0

Второй аргумент в строке printf вызывает проблему, поскольку он будет интерпретировать содержимое p как строку, а не указатель на строку. Строка printf может быть:

printf("%s %c", *(char**)p, *c); 
Смежные вопросы