📜  C数组测试4

📅  最后修改于: 2020-10-23 14:02:36             🧑  作者: Mango

C阵列测试4

16)以下程序中的“ y”是什么?

#include
int main()
{
    typedef char (*(*arrfptr[4])())[20];
    arrfptr y;
    return 0;
}
  1. ‘y’是三个指针的数组
  2. ‘y’是三个函数指针的数组
  3. ‘y’是一个指针
  4. ‘y’声明中的错误

正确的选项是(b)。

说明:

语句typedef char(*(* arrfptr [4])())[20];表示arfptr是一个3函数指针数组,它将返回一个20维数组,其数据类型为char。

因此,“ x”是三个函数指针的数组。

17)return关键字用于将控制权从函数转移回调用函数。

  1. Yes
  2. No

正确的选项是(a)。

说明:

在C中,返回函数停止的函数的执行,并返回具有值到调用函数的控制。通过立即跟随调用,在调用函数开始执行。

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

#include
main()
{ 
   struct { int y;} var = {4}, *a = &var;
   printf("%d %d %d",var.y,a->y,(*a).y); 
}
  1. 4 4 garbage value
  2. 4 4 0
  3. 4 4 4
  4. Compile error

正确的选项是(c)。

说明:

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

因此,程序的输出为4 4 4。

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

#include
main()
{ 
   int a[3] = {1,,2};
   printf("%d", a[a[0]]); 
}
  1. 1个
  2. 2
  3. 0
  4. 编译错误

正确的选项是(d)。

说明:

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

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

#include
main()
{
   int j;
   char s[] = "javaTpoint";
   for(j=0; s[j]; ++j);
      printf("%d \n", j);
   
   j=0; 
   while(s[j++]);
      printf("%d ", j);
}
  1. 是的,两个循环都打印正确的字符串长度
  2. 只有while循环才能打印正确的字符串长度
  3. 仅用于循环打印正确的字符串长度
  4. 程序中的编译错误

正确的选项是(c)。

说明:

  1. 输出:10
  2. 11

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

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