C 指针 测试 4

2025 年 3 月 28 日 | 阅读 2 分钟

16) 下面的程序输出什么?

  1. 0
  2. NULL
  3. 编译错误
  4. 运行时错误

正确选项是 (c)。

说明

在程序中,x 指向 NULL 地址。访问 NULL 地址是非法的,因此程序会发生运行时错误。

因此,程序的输出是运行时错误。

17) 这种 NULL 指针赋值方式正确吗?

  1. 是的
  2. 不能

正确选项是 (b)。

说明

上面的 NULL 指针赋值方法不正确。

正确的方法是

18) 该程序能在 Turbo C 中编译吗?

  1. 是的
  2. 不能

正确选项是 (b)。

说明

在语句 p++ 中会发生错误,因为我们不能对 **void** 指针执行算术运算。

在 TurboC 中编译上述程序时,会显示以下错误。

编译 PROGRAM.C

错误 PROGRAM.C 8: 类型大小未知或为零。

19) 下面关于程序的哪个陈述是正确的?

  1. j 是 int 的指针,存储 i 的地址
  2. i 是指向 int 指针的指针,存储 j 的地址
  3. i 和 j 都是 int 的指针
  4. i 是 int 的指针,存储 j 的地址

正确选项是 (d)。

说明

在程序中,'i' 是包含指针的变量。所以它是一个指针变量,指向内存中的一个整数类型。因此,'i' 是一个 int 的指针。

现在,将 'j' 的地址赋给 'i' 指针,即 'j' 的地址存储在 'i' 位置。

因此,'i' 是一个 int 的指针,它存储了 'j' 的地址。

20) 下面的程序输出什么?

  1. Xyz
  2. yz
  3. 运行时错误
  4. 编译错误

正确选项是 (a)。

说明

在程序中,while 循环会继续,直到 *s 不等于 '\0'。循环内部,先获取字符,然后地址递增。

因此,print 语句即 printf("%c", *p++); 将在输出中打印 **Xyz**。