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