C语言

c语言常见笔试题总结

时间:2024-10-28 05:49:22 C语言 我要投稿
  • 相关推荐

c语言常见笔试题总结

  引导语:C语言之所以命名为C,是因为 C语言源自Ken Thompson发明的B语言,而 B语言则源自BCPL语言。以下是小编整理的c语言常见笔试题总结,欢迎参考阅读!

c语言常见笔试题总结

  【1 使用宏】

  1.1 #error的作用?

  #error用于向编译器报错,并输出它后面带的错误信息。例如:

  #ifndef SOMETHING

  #error SOMETHING not defined!

  #endif

  如果在这段代码之前未定义过SOMETHING,则在编译时出错,并给出"SOMETHING not defined!"的错误信息。

  1.2 定义一个宏,求出给定数组中的元素的个数 #define NELEMENTS(array) (sizeof(array) / sizeof((array)[0]))

  【2 数据声明和定义】

  给定以下类型的变量a的定义式:

  a) An integer

  int a;

  b) A pointer to an integer

  int *a;

  c) A pointer to a pointer to an integer

  int **a;

  d) An array of 10 integers

  int a[10];

  e) An array of 10 pointers to integers

  int *a[10];

  f) A pointer to an array of 10 integers

  int (*a)[10];

  g) A pointer to a function that takes an integer as an argument and returns an integer int (*a)(int );

  h) An array of ten pointers to functions that take an integer argument and return an integer int (*a[10] ) (int );

  【3 复杂类型(1)】

  有如下表达式:

  char (*(*x())[])();

  请用文字描述x是什么。 首先,确定标识符:x

  x是一个函数,没有参数:x()

  返回值是一个指针:*x()

  这个指针指向一个数组:(*x())[]

  数组中的每个元素是指针:*(*x())[]

  指向一个不带参数的函数:(*(*x())[])()

  函数的返回值是char:char (*(*x())[])()

  这里,要知道*、()和[]的优先级

  【5 头文件】

  问:为什么标准头文件都有类似以下的结构?

  #ifndef __INCvxWorksh

  #define __INCvxWorksh #ifdef __cplusplus extern "C" { #endif /*...*/ #ifdef __cplusplus } #endif #endif

  在编译源文件时,C编译器和C++编译器都会对符号(函数或变量)名作某些修正,但两者采用的修正方法不同,所以两者生成的目标文件不能互相链接。在C+ +中使用extern "C"可以让C++符号获得C链接特性。由于C++编译器会自动定义__cplusplus宏,所以在C语言头文件中采用这种结构可以保证无论使用何种编译器,生成的目标文件都具有C链接特性,能够与标准C编译器所生成的目标文件相链接

  【6 static关键字】

  请说出static关键字的3种用处:

  (1)用于全局变量;外部静态变量,只能在本源文件中被引用,不能被其它源文件所引用。

  (2)用于局部变量;局部静态变量,在函数返回后存储单元不释放;下一次调用该函数时,该变量为上次函数返回时的值。

  (3)用于函数。内部函数,只能被本源文件中的函数所调用,不能被其它源文件调用。 /* file.c */

  static int a;

  int b;

  static int fn()

  {

  static int x;

  int y;

  }

  【7 const关键字】

  7.1 const关键字的意义是什么?

  7.2 解释以下的变量定义: const int a1; a1是整型常量。

  int const a2; a2是整型常量。等同于const int a2。

  const int *a3; a3是指针(a3是可变的),指向一个整型常量。等同于int const *a3。 int * const a4; a4是常量指针(a4不可变),指向一个整型变量。

  int const * const a5; a5是常量指针(a5不可变),指向一个整型常量。等同于const int * const a5。

  【8 volatile关键字】

  8.1 volatile意义?

  volatile int *p;

  8.2 volatile能和const一起使用吗?

  const关键字的意思是限制编程者自己不能修改变量的值;两者并不矛盾。

  例如一个内存映射的、只读的硬件寄存器,假设它的地址是p,则可以这样声明:

  volatile const UINT32 *p;

【c语言常见笔试题总结】相关文章:

C语言试题03-28

C语言试题(精选)12-05

C语言程序试题03-28

C语言试题及答案07-26

C语言考前模拟试题03-28

C语言模拟试题及答案03-28

C语言模拟试题练习12-09

标准c语言笔试题12-05

C语言考试试题及答案06-12