C语言笔试题_C笔试题大全14_附答案
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
i nt (*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;
【9 sizeof()】
有以下定义:
char *pmsg = "A";
char msg[] = "A";
char ch = 'A';
问:
sizeof(pmsg) = ? 4
sizeof(msg) = ? 2
sizeof(“A”) = ? 2
sizeof(ch) = ? 1
字符串常量可以与整数混合运算
sizeof(‘A’) = ?(在C++中等于多少?)(在C语言中,字符常量的数据类型实际上是int;在C++中,它的数据类型是char,从而原式等于1)
void f(char param[100])
{
// sizeof(param) = ? 4
}
【10 字符串】
有以下代码
char *pmsg = "hello, world!";
strcpy(pmsg, "hi, there.");
试评论该代码。
【11 混合运算】
有以下代码:
void foo()
{
unsigned int a = 6;
int b = -20;
(a+b > 6) ? puts("> 6") : puts(" < = 6");
}
请问调用foo()的输出?
c语言笔试题(九)
1.
struct
{
signed int bit0:1;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论