欢迎来到天天文库
浏览记录
ID:18243219
大小:53.50 KB
页数:19页
时间:2018-09-15
《c软件工程师笔试题》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、一、请填写BOOL,float,指针变量与“零值”比较的if语句。(10分)提示:这里“零值”可以是0,0.0,FALSE或者“空指针”。例如int变量n与“零值”比较的if语句为:if(n==0)if(n!=0)以此类推。请写出BOOLflag与“零值”比较的if语句:标准答案:if(flag)if(!flag)如下写法均属不良风格,不得分。if(flag==TRUE)if(flag==1)if(flag==FALSE)if(flag==0)请写出floatx与“零值”比较的if语句:标准答案示例:constfloatEPSINON=0.00001;if((x>=-EPSINON)&
2、&(x<=EPSINON)不可将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”此类形式。如下是错误的写法,不得分。if(x==0.0)if(x!=0.0)请写出char*p与“零值”比较的if语句: 标准答案:if(p==NULL)if(p!=NULL)如下写法均属不良风格,不得分。if(p==0)if(p!=0)if(p)if(!)二、以下为WindowsNT下的32位C++程序,请计算sizeof的值(10分)charstr[]=“Hello”;char*p=str;intn=10;sizeof(str)=6sizeof(p)=4sizeof(n)=4vo
3、idFunc(charstr[100]){请计算sizeof(str)=4}void*p=malloc(100);请计算sizeof(p)=4三、简答题(25分)1、头文件中的ifndef/define/endif干什么用?防止该头文件被重复引用2、#include和#include“filename.h”有什么区别?答:对于#include ,编译器从标准库路径开始搜索filename.h 对于#include “filename.h”,编译器从用户的工作路径开始搜索filename.h3、const有什么用途?(请至少说明两种)答
4、:(1)可以定义const常量(2)const可以修饰函数的参数、返回值,甚至函数的定义体。被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。4、在C++程序中调用被C编译器编译后的函数,为什么要加extern“C”声明?答:C++语言支持函数重载,C语言不支持函数重载。函数被C++编译后在库中的名字与C语言的不同。假设某个函数的原型为:voidfoo(intx,inty);该函数被C编译器编译后在库中的名字为_foo,而C++编译器则会产生像_foo_int_int之类的名字。C++提供了C连接交换指定符号extern“C”来解决名字匹配问题。5、请简述以
5、下两个for循环的优缺点for(i=0;i6、or(i=0;i7、返回动态内存,free()对str操作很危险 博主:getmemory中p是形参,是一个指针变量,getmemory(str)调用后,传入的是指针变量保存的对象地址,p=(char*)malloc(100)实际上是把申请的动态内存空间的首地址付给p指向的地址(即str指向的地址null),这个是错误的。应该修改成指向指针的指针voidgetmemory(char**p),这样malloc返回的地址付给*p(即str变量本身)。char*Get
6、or(i=0;i7、返回动态内存,free()对str操作很危险 博主:getmemory中p是形参,是一个指针变量,getmemory(str)调用后,传入的是指针变量保存的对象地址,p=(char*)malloc(100)实际上是把申请的动态内存空间的首地址付给p指向的地址(即str指向的地址null),这个是错误的。应该修改成指向指针的指针voidgetmemory(char**p),这样malloc返回的地址付给*p(即str变量本身)。char*Get
7、返回动态内存,free()对str操作很危险 博主:getmemory中p是形参,是一个指针变量,getmemory(str)调用后,传入的是指针变量保存的对象地址,p=(char*)malloc(100)实际上是把申请的动态内存空间的首地址付给p指向的地址(即str指向的地址null),这个是错误的。应该修改成指向指针的指针voidgetmemory(char**p),这样malloc返回的地址付给*p(即str变量本身)。char*Get
此文档下载收益归作者所有