
笔试题
Leviathan_chen
冷血
展开
-
简述const关键字的作用
1 const可以为看代码的人传递非常有用的信息,实际上,声明一个参数为常量是为了告诉用户这个参数的应用目的2 合理使用const可以使优化器产生更加高效的代码3 合理使用const可以使编译器保护那些不希望被修改的参数,防止其被无意的修改,减少bug的产生注意:const int a; 声明一个整型常量int const a; 声明一个整型常量转载 2016-03-13 21:12:33 · 909 阅读 · 0 评论 -
使用宏定义写出swap(x,y)
一般答案:#define swap(x,y) x = x + y; y = x - y; x = x - y;但是在以下情况会出错! if( x > y){swap( x , y );}elsex++;展开后y = x - y; x = x - y;将不会执行所以比较好的写法是:#define swap转载 2016-03-13 21:25:06 · 4084 阅读 · 0 评论 -
全局变量能否定义在可被多个.c文件包含的头文件中?为什么?
能。在不同的.c文件中可以以static形式来声明同名的全局变量。可以再不同的.c文件中声明同名的全局变量,前提是只有一个C文件对此全局变量赋初值,否则连接的时候回出现错误转载 2016-03-13 21:24:14 · 1188 阅读 · 0 评论 -
预处理文件,包含预订头文件<>和””有什么区别?
只搜索系统定义的include文件夹,而””先从当前文件夹搜索头文件。通常为用户自己定义的头文件转载 2016-03-13 21:23:34 · 418 阅读 · 0 评论 -
下面两个结构体的大小是多少?
struct studen1{char str;short x;int num;}; struct student2{char str;int num;short x;};答案:sizeof(strdent1) = 8; sizeof(student2) = 12;转载 2016-03-13 21:22:39 · 1200 阅读 · 0 评论 -
c和c++中struct有什么不同?C++中的struct和class有什么不同?
c中的struct只是一些变量的集合,可以封装数据却不能隐藏数据,而且成员不能是函数。但是c++可以C++中struct和class的区别主要在于默认权限不同。struct默认是public,class默认是private。转载 2016-03-13 21:21:59 · 678 阅读 · 0 评论 -
简述extern的作用,说明什么时候会使用extern?
extern可以置于变量或者函数前,以表示这个变量或函数定义在别的文件中,提示编译器在遇到此变量或函数的时候在其他模块寻找其定义。主要使用方式有两种:1.如果函数的声明中带有extern,说明这个函数定义在其他文件中,这样的好处是可以取代include”*.h”,在一些复杂的项目中这样使用比较方便2.C++在变异的时候为了解决函数的多态问题,会将函数名和参数联合起来生成转载 2016-03-13 21:21:18 · 3839 阅读 · 0 评论 -
分别写出BOOL,int,float,指针类型的 变量a与零相比的语句
BOOL: if( a )int: if( a == 0)float: const float EXP = 0.000001; if(a >= -EXP && a point: if(a == NULL)转载 2016-03-13 21:20:38 · 1941 阅读 · 0 评论 -
这段代码在32位计算机上的执行结果是什么?
typedef union {long i;int k[5];char c} DATA;struct date {int cat;DATA cow;double dog;} too;DATA max;printf("%d", sizeof(struct date)+sizeof(max));解析:DATA 是一个共用体,变量共同使用空间,最大的为int k[5] ,占用转载 2016-03-13 21:19:15 · 882 阅读 · 0 评论 -
写一个语句实现x是否为2的若干次幂的判断
算法:如果一个数x为2的整数倍,则x&(x-1)为false,否则其为真cout转载 2016-03-13 21:18:39 · 2821 阅读 · 0 评论 -
交换两个数的值,不引用第三个变量
至少要清楚两种实现方式:第一种:(注意越界)a = a + b;b = a - b;a = a - b; 第二种:(对参数类型有要求,只能对int,char)a = a ^ b;b = a ^ b;a = a ^ b;转载 2016-03-13 21:18:09 · 335 阅读 · 0 评论 -
下面的程序执行后有什么错误?
#define MAX 255int main(){ unsigned char A[MAX],i; for(i = 0; i A[i] = i;} 解析:此题有两处错误。1. 数组访问越界,MAX = 255,数组A的下边范围是0-2542. 死循环。A[255] = 255 ,执行完后i值会+1,unsigned char取值转载 2016-03-13 21:17:30 · 1158 阅读 · 0 评论 -
局部变量能否和全局变量同名?
可以,局部变量会屏蔽全局变量。在函数内引用这个变量时,会用到同名的局部变量而不会用到全局变量。转载 2016-03-13 21:16:32 · 1962 阅读 · 0 评论 -
请说出const和宏定义相比有什么优点? 至少要说明两点:
1 const常量有数据类型 宏定义没有数据类型;编译器可以对前者进行类型安全检查,对后者只是进行类型替换而已,没有类型安全检查,并且在替换的时候可能会发生意想不到的错误2 有些集成化的调试工具可以对const常量进行调试,但是不能对宏定义进行调试,因为编译器对宏只是进行字符替换转载 2016-03-13 21:15:38 · 919 阅读 · 0 评论 -
A.c和B.c两个文件中使用了名字相同的static变量,编译的时候会不会有问题?这两个static变量存储在什么地方?
Static的全局变量,说明这个变量只在本模块有意义,不会影响其他模块。他们都存放在数据区,但是编译器对他们的命名是不同的。要使变量在其他模块有意义的话需要使用extern关键字。转载 2016-03-13 21:14:51 · 2980 阅读 · 0 评论 -
在C语言中,static关键字的作用是什么?
1.1 在函数体内,一个被声明为静态的变量在函数被调用的过程中其值为上次使用后保存的值1.2 在模块内(在函数体外),一个被声明为静态的变量可以被模块内所有函数访问,但不能被模块外其它函数访问,他是一个本地的变量1.3 在模块内,被声明为静态的函数只能被这一个模块的其它函数调用,也就是说这个函数被限制在声明它的本地范围内使用转载 2016-03-13 21:13:42 · 412 阅读 · 0 评论 -
有以下宏定义, #define MIN(A,B) ((A) <= (B) ? (A) : (B)) 请写出一种不能正确返回的情况?
时刻谨记 宏定义只是简单的字符替换MIN(a++,b++)转载 2016-03-13 21:26:17 · 2137 阅读 · 0 评论