c语言面试题目100及最佳答案.docx

上传人:b****4 文档编号:3020875 上传时间:2022-11-17 格式:DOCX 页数:42 大小:31.66KB
下载 相关 举报
c语言面试题目100及最佳答案.docx_第1页
第1页 / 共42页
c语言面试题目100及最佳答案.docx_第2页
第2页 / 共42页
c语言面试题目100及最佳答案.docx_第3页
第3页 / 共42页
c语言面试题目100及最佳答案.docx_第4页
第4页 / 共42页
c语言面试题目100及最佳答案.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

c语言面试题目100及最佳答案.docx

《c语言面试题目100及最佳答案.docx》由会员分享,可在线阅读,更多相关《c语言面试题目100及最佳答案.docx(42页珍藏版)》请在冰豆网上搜索。

c语言面试题目100及最佳答案.docx

c语言面试题目100及最佳答案

c语言面试题目100及最佳答案

1、请填写bool,float,指针变量与“零值”比较的if

语句。

提示:

这里“零值”可以是0,0.0,FALSE或者“空指针”

例如int变量n与“零值”比较的if语句为:

if(n==0)

if(n!

=0)

以此类推。

(1)请写出boolflag与“零值”比较的if语句:

【标准答案】if(flag)if(!

flag)

100条经典C语言笔试题目

(2)请写出floatx与“零值”比较的if语句:

【标准答案】constfloatEPSINON=0.00001;

if((x>=-EPSINON)&&(x<=EPSINON)

不可将浮点变量用“==”或“!

=”与数字比较,应该设法

转化成“>=”或“<=”此类形式。

100条经典C语言笔试题目

(3)请写出char*p与“零值”比较的if语句

【标准答案】if(p==NULL)if(p!

=NULL)

2、以下为Linux下的32位C程序,请计算sizeof的

值。

charstr[]=“Hello”;

char*p=str;

intn=10;

请计算

(1)sizeof(str)=

(2)sizeof(p)=

(3)sizeof(n)=

【标准答案】

(1)6、

(2)4、(3)4

(4)voidFunc(charstr[100])

{

……;

}

请计算sizeof(str)=

(5)void*p=malloc(100);

请计算sizeof(p)=

【标准答案】(4)4、(5)4

4、用变量a给出下面的定义

e)一个有10个指针的数组,该指针是指向一个整型数

的;

f)一个指向有10个整型数数组的指针;

g)一个指向函数的指针,该函数有一个整型参数并返

回一个整型数;

h)一个有10个指针的数组,该指针指向一个函数,该

函数有一个整型参数并返回一个整型数;

【标准答案】e)int*a[10];f)int(*a)[10]

g)int(*a)(int);h)int(*a[10])(int)

5、设有以下说明和定义:

typedefunion{longi;intk[5];charc;}DATE;

structdata{intcat;DATEcow;doubledog;}too;

DATEmax;

则语句printf("%d",sizeof(structdate)+sizeof(max));的

执行结果是:

_____

【标准答案】DATE是一个union,变量公用空间.里面最

大的变量类型是int[5],占用20个字节.所以它的大小是

20

data是一个struct,每个变量分开占用空间.依次为int4+

DATE20+double8=32.

所以结果是20+32=52.

当然...在某些16位编辑器下,int可能是2字节,那么结果

是int2+DATE10+double8=20

6、请问以下代码有什么问题:

intmain()

{

chara;

char*str=&a;

strcpy(str,"hello");

printf(str);

return0;

}

【标准答案】没有为str分配内存空间,将会发生异常

问题出在将一个字符串复制进一个字符变量指针所指

地址。

虽然可以正确输出结果,但因为越界进行内在

读写而导致程序崩溃。

7、请问以下代码有什么问题:

char*s="AAA";

printf("%s",s);

s[0]='B';

printf("%s",s);

有什么错?

【标准答案】"AAA"是字符串常量。

s是指针,指向这个

字符串常量,所以声明s的时候就有问题。

cosntchar*s="AAA";

然后又因为是常量,所以对是s[0]的赋值操作是不合法

的。

8、int(*s[10])(int)表示的是什么啊

【标准答案】int(*s[10])(int)函数指针数组,每个指针

指向一个intfunc(intparam)的函数。

9、c和c++中的struct有什么不同?

【标准答案】c和c++中struct的主要区别是c中的struct

不可以含有成员函数,而c++中的struct可以。

c++中

struct和class的主要区别在于默认的存取权限不同,

struct默认为public,而class默认为private

10、voidgetmemory(char*p)

{

p=(char*)malloc(100);

strcpy(p,“helloworld”);

}

intmain()

{

char*str=NULL;

getmemory(str);

printf(“%s/n”,str);

free(str);

return0;

}会出现什么问题?

【标准答案】程序崩溃,getmemory中的malloc不能返回

动态内存,free()对str操作很危险。

11、charszstr[10];

strcpy(szstr,"0123456789");

产生什么结果?

为什么?

【标准答案】长度不一样,出现段错误。

100条经典C语言笔试题目

12、数组和链表的区别?

【标准答案】数组:

数据顺序存储,固定大小;

链表:

数据可以随机存储,大小可动态改变

13、voidmain()

{

charaa[10];

printf(“%d”,strlen(aa));

}

会出现什么问题?

打印结果是是多少?

【标准答案】sizeof()和初不初始化,没有关系,

strlen()和初始化有关,打印结果值未知。

14、给定结构structA

{

chart:

4;

chark:

4;

unsignedshorti:

8;

unsignedlongm;

};问sizeof(A)=?

【标准答案】8

15、structname1{

charstr;

shortx;

intnum;

};求sizeof(name1)?

【标准答案】8

16、structname2{

charstr;

intnum;

shortx;

};求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值是相同的

20、要对绝对地址0x100000赋值,我们可以用

(unsignedint*)0x100000=1234;

那么要是想让程序跳转到绝对地址是0x100000去执行

,应该怎么做?

【标准答案】*((void(*)())0x100000)();

首先要将0x100000强制转换成函数指针,即:

(void(*)())0x100000

然后再调用它:

*((void(*)())0x100000)();

22、关于内存的思考题

(1)你能看出有什么问题?

23、关于内存的思考题

(2)你能看出有什么问题?

25、关于内存的思考题(3)你能看出有什么问题?

26、关于内存的思考题(4)你能看出有什么问题?

27、关键字volatile有什么含意?

并给出三个不同的例

子。

【参考答案】一个定义为volatile的变量是说这变量可

能会被意想不到地改变,这样,编译器就不会去假设

这个变量的值了。

精确地说就是,优化器在用到这个

变量时必须每次都小心地重新读取这个变量的值,而

不是使用保存在寄存器里的备份。

下面是volatile变量

的几个例子:

1).并行设备的硬件寄存器(如:

状态寄存器)

2).一个中断服务子程序中会访问到的非自动变量

(Non-automaticvariables)

3).多线程应用中被几个任务共享的变量

28、嵌入式系统经常具有要求程序员去访问某特定的

内存位置的特点。

在某工程中,要求设置一绝对地址

为0x67a9的整型变量的值为0xaa66。

编译器是一个纯

粹的ANSI编译器。

写代码去完成这一任务。

【参考答案】这一问题测试你是否知道为了访问一绝对

地址把一个整型数强制转换(typecast)为一指针是合

法的。

这一问题的实现方式随着个人风格不同而不同

典型的类似代码如下:

int*ptr;

ptr=(int*)0x67a9;

*ptr=0xaa55;

29、头文件中的ifndef/define/endif干什么用?

【标准答案】防止该头文件被重复引用。

30、#include和#include

“filename.h”有什么区别?

【标准答案】对于#include,编译器从

标准库路径开始搜索filename.h;

对于#include“filename.h”,编译器从用户的工作路

径开始搜索filename.h。

31、const有什么用途?

(请至少说明两种)

【标准答案】:

(1)可以定义const常量

(2)const可以修饰函数的参数、返回值,甚至函数

的定义体。

被const修饰的东西都受到强制保护,可

以预防意外的变动,能提高程序的健壮性。

32、static有什么用途?

(请至少说明两种)

【标准答案】

1.限制变量的作用域(static全局变量);

2.设置变量的存储域(static局部变量)。

33、堆栈溢出一般是由什么原因导致的?

【标准答案】没有回收垃圾资源。

34、如何引用一个已经定义过的全局变量?

【标准答案】可以用引用头文件的方式,也可以用

extern关键字,如果用引用头文件方式来引用某个在

头文件中声明的全局变理,假定你将那个变量写错了

,那么在编译期间会报错,如果你用extern方式引用

时,假定你犯了同样的错误,那么在编译期间不会报

错,而在连接期间报错。

35、全局变量可不可以定义在可被多个.C文件包含的

头文件中?

为什么?

【标准答案】可以,在不同的C文件中以static形式来声

明同名全局变量。

可以在不同的C文件中声明同名的全

局变量,前提是其中只能有一个C文件中对此变量赋初

值,此时连接不会出错。

36、队列和栈有什么区别?

【标准答案】队列先进先出,栈后进先

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1