1、c语言面试题目100及最佳答案c语言面试题目100及最佳答案 1、请填写bool , float, 指针变量 与“零值”比较的if 语句。提示:这里“零值”可以是0, 0.0 , FALSE 或者“空指针”。例如int 变量n 与“零值”比较的if 语句为:if ( n = 0 ) if ( n != 0 ) 以此类推。(1)请写出bool flag 与“零值”比较的if 语句:【标准答案】if ( flag ) if ( !flag )100 条经典 C语言笔试题目(2)请写出float x 与“零值”比较的if 语句:【标准答案】 const float EPSINON = 0.00001
2、; if (x = - EPSINON) & (x =” 或“=” 此类形式。100 条经典 C语言笔试题目(3)请写出char *p 与“零值”比较的if 语句【标准答案】 if (p = NULL) if (p != NULL) 2、以下为Linux下的32 位C 程序,请计算sizeof 的值。char str = “Hello” ; char *p = str ; i nt n = 10; 请计算(1)sizeof (str ) = (2)s i zeof ( p ) = (3)sizeof ( n ) =【标准答案】(1)6、(2)4 、(3 )4(4)void Func ( cha
3、r str100) ; 请计算sizeof( str ) = (5)void * p = malloc( 100 ); 请计算sizeof ( p ) = 【标准答案】(4)4、(5)4 4、用变量a 给出下面的定义e) 一个有10个指针的数组,该指针是指向一个整型数的;f) 一个指向有10个整型数数组的指针;g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数;h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数;【标准答案】e)int * a10; f)int (*a)10 g)int (*a)(int); h) int (*a10)(int)
4、5、设有以下说明和定义:typedef u nion long i; int k5; char c; DATE;struct data int cat; DATE cow; double dog; too;DATE max;则语句printf(%d,sizeof(struct date)+sizeof(max); 的执行结果是:_【标准答案】DATE是一个union, 变量公用空间. 里面最大的变量类型是int5, 占用20个字节. 所以它的大小是20data 是一个struct, 每个变量分开占用空间. 依次为int4 + DATE20 + double8 = 32.所以结果是20 + 32
5、 = 52.当然. 在某些16位编辑器下, int 可能是2字节,那么结果是int2 + DATE10 + double8 = 20 6、请问以下代码有什么问题:int main()char a;char *str=&a;strcpy(str,hello);printf(str);return 0;【标准答案】没有为str分配内存空间,将会发生异常问题出在将一个字符串复制进一个字符变量指针所指地址。虽然可以正确输出结果,但因为越界进行内在读写而导致程序崩溃。 7、请问以下代码有什么问题:char* s=AAA;printf(%s,s);s0=B;printf(%s,s);有什么错?【标准答案】
6、AAA 是字符串常量。s是指针,指向这个字符串常量,所以声明s的时候就有问题。cosnt char* s=AAA;然后又因为是常量,所以对是s0 的赋值操作是不合法的。 8、int (*s10)(int) 表示的是什么啊【标准答案】int (*s10)(int) 函数指针数组,每个指针指向一个int func(intp aram) 的函数。 9、c和c+ 中的struct有什么不同?【标准答案】c和c+ 中struct的主要区别是c中的struct不可以含有成员函数,而c+ 中的struct可以。c+ 中struct和class的主要区别在于默认的存取权限不同,struct默认为public
7、,而class默认为private 10、void getmemory(char *p)p=(char *) malloc(100);strcpy(p,“hello world”);int main( )char *str=NULL;getmemory(str);printf(“%s/n”,str);free(str);return 0; 会出现什么问题?【标准答案】程序崩溃,getmemory中的malloc 不能返回动态内存,free ()对str操作很危险。 11、char szstr10;strcpy(szstr,0123456789);产生什么结果?为什么?【标准答案】长度不一样,出
8、现段错误。100 条经典 C语言笔试题目12、数组和链表的区别?【标准答案】数组:数据顺序存储,固定大小;链表:数据可以随机存储,大小可动态改变 13、void main()char aa10;printf(“%d”,strlen(aa); 会出现什么问题?打印结果是是多少?【标准答案】sizeof()和初不初始化,没有关系,strlen()和初始化有关,打印结果值未知。 14、给定结构struct Achar t:4;char k:4;unsigned short i:8;unsigned long m; 问sizeof(A) = ?【标准答案】8 15、struct name1char s
9、tr;short x;int num; ;求sizeof(name1)?【标准答案】8 16、struct name2char str;int num;short x; 求sizeof(name2)?【标准答案】12 17、程序哪里有错误wap( int* p1,int* p2 )int * p;*p = *p1;*p1 = *p2;*p2 = *p;【标准答案】p 为野指针(指向一个已删除的对象或未申请访问受限内存区域的指针) 19、(void *)ptr 和(*(void*)ptr 的结果是否相同?其中ptr为同一个指针。【标准答案】(void *)ptr 和(*(void*)ptr 值是
10、相同的 20、要对绝对地址0x100000赋值,我们可以用(unsigned int*)0x100000 = 1234;那么要是想让程序跳转到绝对地址是0x100000去执行,应该怎么做?【标准答案】*(void (*)( )0x100000 ) ( );首先要将0x100000强制转换成函数指针,即:(void (*)()0x100000然后再调用它:*(void (*)()0x100000)(); 22、关于内存的思考题(1)你能看出有什么问题? 23、关于内存的思考题(2)你能看出有什么问题? 25、关于内存的思考题(3)你能看出有什么问题? 26、关于内存的思考题(4)你能看出有什么问
11、题? 27、关键字volatile有什么含意? 并给出三个不同的例子。【参考答案】一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:1). 并行设备的硬件寄存器(如:状态寄存器)2). 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)3). 多线程应用中被几个任务共享的变量 28、嵌入式系统经常具有要求程序员去访问某特定的内存位置的特点。在某工程中,要求设
12、置一绝对地址为0x67a9的整型变量的值为0xaa66。编译器是一个纯粹的ANSI编译器。写代码去完成这一任务。【参考答案】这一问题测试你是否知道为了访问一绝对地址把一个整型数强制转换(typecast )为一指针是合法的。这一问题的实现方式随着个人风格不同而不同。典型的类似代码如下:int * ptr;ptr= (int *)0x67a9;*ptr = 0xaa55; 29、头文件中的ifndef/define/endif 干什么用?【标准答案】防止该头文件被重复引用。 30、#include 和#include “filename.h” 有什么区别?【标准答案】对于#include ,编译
13、器从标准库路径开始搜索filename.h ; 对于#include “filename.h” ,编译器从用户的工作路径开始搜索filename.h 。 31、const 有什么用途?(请至少说明两种)【标准答案】: (1)可以定义const 常量(2)const 可以修饰函数的参数、返回值,甚至函数的定义体。被const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。 32、static有什么用途?(请至少说明两种)【标准答案】1. 限制变量的作用域(static全局变量);2. 设置变量的存储域(static局部变量)。 33、堆栈溢出一般是由什么原因导致的?【标准答案
14、】没有回收垃圾资源。 34、如何引用一个已经定义过的全局变量?【标准答案】可以用引用头文件的方式,也可以用extern 关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变量写错了,那么在编译期间会报错,如果你用extern 方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。 35、全局变量可不可以定义在可被多个.C 文件包含的头文件中?为什么?【标准答案】可以,在不同的C 文件中以static形式来声明同名全局变量。可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错。 36、队列和栈有什么区别?【标准答案】队列先进先出,栈后进先
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1