C 数组测试 4

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

16) 下列程序中 'y' 是什么?

  1. 'x' 是一个包含三个指针的数组
  2. 'x' 是一个包含三个函数指针的数组
  3. 'x' 是一个指针
  4. 'x' 声明有误

正确选项是 (b)。

说明

语句 typedef char (*(*arrfptr[4])())[20]; 意味着 arfptr 是一个包含 3 个函数指针的数组,该函数返回一个包含 20 个字符类型元素的数组。

因此 'x' 是一个包含三个函数指针的数组。

17) return 关键字用于将控制权从一个函数传递回调用它的函数。

  1. 是的
  2. 不能

正确选项是 (a)。

说明

在 C 语言中,return 函数会停止函数的执行,并将一个值返回给调用函数。程序执行从调用函数开始,紧接着调用语句。

18) 下列程序的输出是什么?

  1. 4 4 垃圾值
  2. 4 4 0
  3. 4 4 4
  4. 编译错误

正确选项是 (c)。

说明

使用指针访问结构体元素的两种可能方法是使用 * 或 -> (箭头运算符)。

因此程序的输出是 4 4 4。

19) 下列程序的输出是什么?

  1. 1
  2. 2
  3. 0
  4. 编译错误

正确选项是 (d)。

说明

程序中使用了无效的语法来初始化数组。因此程序的输出会发生编译错误。

20) 判断程序中的两个循环是否都打印了正确的字符串长度?

  1. 是的,两个循环都打印了正确的字符串长度
  2. 只有 while 循环打印了正确的字符串长度
  3. 只有 for 循环打印了正确的字符串长度
  4. 程序编译错误

正确选项是 (c)。

说明

在 while 循环中,打印的字符串长度不正确,因为 while 循环变量 'i' 在检查 '\0' 之后才递增,因此比字符串长度多 1。

因此只有 for 循环打印了正确的字符串长度。