📜  C测验– 101 |问题3

📅  最后修改于: 2021-06-29 21:17:54             🧑  作者: Mango

#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) ppInt1和ppInt2的malloc()不正确。它将给出编译时错误。
(B) free(* ppInt2)不正确。它将给出编译时错误。
(C) free(* ppInt2)不正确。它会给运行时错误。
(D) malloc()和free()中的任何一个都没有问题,即没有编译/运行时错误。答案: (D)
说明: ppInt2是指向int的指针。 * ppInt2是指向int的指针。只要free()的参数是指针,就没有问题。这就是为什么B)和C)都不正确的原因。 ppInt1和ppInt2的分配根据它们的数据类型都可以。所以A)也不正确。正确的陈述是D)。
这个问题的测验

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。