📜  C结构体、共同体、枚举测试4

📅  最后修改于: 2020-10-23 05:56:08             🧑  作者: Mango

C结构,联合,枚举测试4

16)在以下程序中找出错误?

struct employ
{
    int ecode;
    struct employ *e;
};
  1. Error: in structure declaration
  2. Linker
  3. No error
  4. None of the above

正确的选项是(c)。

说明:

这种类型的声明称为自引用结构。允许在程序中使用这种类型的声明。

* e是指向结构采用的指针

因此,编译器将在程序中返回无错误

17)位字段不能在联合中使用。

正确的选项是(b)。

说明:

错误,允许在联合内部使用位字段。

下面给出了在联合体内使用位字段的C程序:

#include  
union Pointer  
{  
  unsigned int a:4;  
  unsigned int b:4;  
  int res;  
};  
int main()  
{  
   union  Pointer pt;  
   pt.a = 2;  
   pt.b = 6;  
   pt.res = pt.b;  
   printf("\n The value of res is: %d" , pt.res);  
   return 0;  
}  
// Output: The value of res is: 6 

18)并集元素的大小可以不同。

正确的选项是(a)。

说明:

的确,并集元素可以具有不同的大小。

所有联合元素可能具有不同的大小,但它们共享内存的公共空间。

19)如果以下结构用于通过fwrite()写入文件,fread()能否成功读回它?

struct employ
{
    char *p;
    int age;
};
struct employ e={"javaTpoint", 25};
FILE *fp;
fwrite(&e, sizeof(e), 1, fp);
  1. Yes
  2. No

正确的选项是(b)。

说明:

否,因为在程序中使用fwrite()将结构写入磁盘时,程序中的结构包含char指针,因此只会写入存储在指针“ n”中的数据。因此, fread()无法读取指针中存储的数据。

因此, fread()无法成功读回它。

20)在DOS(16位平台)下在Turbo C中程序的输出是什么?

#include
int main()
{
    struct values
    {
        int bit1:1;
        int bit3:3;
        int bit4:4;
    }bit;
    printf("%d \n", sizeof(bit));
    return 0;
}
  1. 9
  2. 4
  3. 2
  4. 1

正确的选项是(c)。

说明:

由于C语言是机器或编译器相关的语言。在Turbo C(DOS)中,整数数据类型的大小为2。

因此,语句printf(“%d \ n”,sizeof(bit));在输出中输出值2。