Рубрики

Викторина С — 101 | Вопрос 3

#include "stdlib.h"

int main()

{

 int *pInt;

 int **ppInt1;

 int **ppInt2;

  

 pInt = (int*)malloc(sizeof(int));

 ppInt1 = (int**)malloc(10*sizeof(int*));

 ppInt2 = (int**)malloc(10*sizeof(int*));

  

 free(pInt);

 free(ppInt1);

 free(*ppInt2);

 return 0;

}

Выберите правильное утверждение по сравнению с C-программой.
(A) malloc () для ppInt1 и ppInt2 не правильно. Это даст ошибку времени компиляции.
(B) бесплатно (* ppInt2) не правильно. Это даст ошибку времени компиляции.
(C) бесплатно (* ppInt2) не правильно. Это даст ошибку во время выполнения.
(D) Нет проблем ни с одним из malloc () и free (), т.е. без ошибок компиляции / времени выполнения.

Ответ: (D)
Объяснение: ppInt2 — указатель на указатель на int. * ppInt2 — указатель на int. Пока аргумент free () является указателем, проблем нет. Вот почему B) и C) оба не верны. Распределение как ppInt1, так и ppInt2 прекрасно в соответствии с их типом данных. Так что а) тоже не правильно. Правильное утверждение D).
Тест на этот вопрос

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

Викторина С — 101 | Вопрос 3

0.00 (0%) 0 votes