Рубрики

C | Основы указателя | Вопрос 14

Предсказать вывод следующей программы

#include<stdio.h>

int main()

{

    int a = 12;

    void *ptr = (int *)&a;

    printf("%d", *ptr);

    getchar();

    return 0;

}

(А) 12
(B) Ошибка компилятора
(C) Ошибка времени пробега
(D) 0

Ответ: (Б)
Объяснение: в строке «printf («% d », * ptr);» ошибка компилятора).

Указатели типа void * не могут быть разыменованы. Мы должны набрать cast перед разыменованием.

Следующая программа работает нормально и печатает 12.

#include<stdio.h>

int main()
{
    int a = 12;
    void *ptr = (int *)&a;
    printf("%d", *(int *)ptr);
    getchar();
    return 0;
}

Тест на этот вопрос

Рекомендуемые посты:

C | Основы указателя | Вопрос 14

0.00 (0%) 0 votes