面试题集的cc和答案_第1页
面试题集的cc和答案_第2页
面试题集的cc和答案_第3页
面试题集的cc和答案_第4页
面试题集的cc和答案_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

用预处理指令#define一个常数,用以表明1年中有多少秒(忽略闰年#defineSECONDS_PER_YEAR(60*60*24*#define语法的基本知识(例如:不能以分号结束,括号的使用,等等16位机的整型数溢出-#defineMIN(A,B)((A)<=(B)(A):))C\C++试题集C\C++Development这个测试是为下面的目的而设的C的一部分,宏是方便产生嵌入代码的唯一方法,对于嵌入式if-then-else更优化的代码,了解这个用法是很重要的。懂得在宏中地把参数用括号括起least=MIN(*p++,预处理器标识#error呆子是很有用的。只有书呆子才会读C语言的附录去找出象这种死循环(InfiniteCwhile(1){for(;;){gotogoto事)BASIC/FORTRAN程序员。数据(Dataa一个整型数(An一个指向整型数的指针(Apointertoan一个指向指针的的指针,它指向的指针是指向一个整型数(Apointertoapointertoaninteger)10个整型数的数组(Anarrayof1010个指针的数组,该指针是指向一个整型数的(Anarrayof10pointerstointegers)10个整型数数组的指针(Apointertoanarrayof10一个指向函数的指针,该函数有一个整型参数并返回一个整型数(Apointertoafunctionthattakesanintegerasanargumentandreturnsaninteger)返回一个整型数(Anarrayoftenpointerstofunctionsthattakeanintegerargumentandreturnaninteger)inta;//Anint*a;//Apointertoanint**a;//Apointertoapointertoaninta[10];//Anarrayof10int*a[10];//Anarrayof10pointerstoint(*a)[10];//Apointertoanarrayof10int(*a)(int);//Apointertoafunctionathattakesanintegerargumentandreturnsanintegerint(*a[10])(int);//Anarrayof10pointerstofunctionsthattakeanintegerargumentandreturnaninteger这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显在函数体,一个被为静态的变量在这一函数被调用过程中维持其值不在模块内(但在函数体外),一个被为静态的变量可以被模块内所用函数,但不能被模块外其它函数。它是一个本地的全局变量。在模块内,一个被为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在它的模块的本地范围内使用。const我只要一听到被面试者说:“const意味着常数”,我就知道我正在和一个业余者DanSaksconstESP(译者:EmbeddedSystemsProgramming)的每一位读者应该非常熟悉const能做什么和不能做什么.const意味着“只读”就可以了。尽管Saks的文章吧。)如果应试者能正确回答这个问题,我将问他一个附加的问题:下面的都是什么意思?constinta;intconsta;constint*a;int*constintconst*a前两个的作用是一样,aa是一个指向常整型数的指针(也就是,整型数是不可修改的,但指针可以)a是一是不可修改的)a是一个指向常整型数的常指针(也就是const呢?我也如下的几下理由:间清理其它人留下的,你就会很快学会感谢这点多余的信息。(当然,懂得用const的程序员很少会留下的让别人来清理的。)bugvolatilevolatile的变量是说这变量可能会被意想不到地改变,这样,编译须每次都地重新这个变量的值,而不是使用保存在寄存器里的备份。volatile变量的几个例子:一个中断服务子程序中会到的非自动变量(Non-automaticC程序员和嵌入式系统程序员的最基本的问题。嵌入式系统程序员经常同硬件、中断、RTOS等等打交道,所用这些都要求volatile变量。不懂得volatile内容将会带来。volatile完全的重要性。volatileintsquare(volatileint{return*ptr*}const因为程序不应该试图去修改它。buffer的指针时。方,但是,由于*ptrvolatile型参数,编译器将产生类似下面的代intsquare(volatileint{inta=b=*ptr;returna*b;}由于*ptr的值可能被意想不到地该变,因此a和b可能是不同的。结果,这段longsquare(volatileint{inta=*ptr;returna*a;}位操作(Bitabit3abit3。在以上两个操作bitfields。BitfieldsC语言死角的东西,它保证你的代码在不不幸看到Infineon为其较复杂的通信写的驱动程序,它用到了bitfields因bitfields的。从道德讲:不要让一个非嵌入式的家伙粘实际硬件的边。#definesbitmasks操作。这是一个有极高可移植性的方法,是应#defineBIT3(0x1<<3)staticinta;void{a|=}void{a&=}固定的内存位置(Accessingfixedmemorylocations)C\C++Development嵌入式系统经常具有要求程序员去某特定的内存位置的特点。在某工,要求设置一绝对地址为0x67a9的整型变量的值为0xaa66。编译器是一ANSI编译器。写代码去完成这一任务。这一问题测试你是否知道为了一绝对地址把一个整型数强制转intptr=(int*ptr=*(int*const)(0x67a9)=即使你的品味更接近第二种方案,但我建议你在面试时使用第案中断扩展—C支持中断。具代表事实是,产生了一个新的关键字interrupt。下面的代码就使用了interrupt关键字去定义了一个中断服务子interruptdoublecompute_area(double{doublearea=PI*radius*radius;printf("Area=%f",area);return}ISRISR需要让额处的寄存器入栈,有些处理器/ISR中做浮点运算。此外,ISRISR中做浮点运算是不明智的。代码例子(Code12.void{unsignedinta=6;intb=-20;(a+b>6)puts(">6"):puts("<=}C语言中的整数自动转换原则,我发现有些开发者懂类型。因此-20变成了一个非常大的正整数,所以该表达式计算出的结果大于unsignedintzero=unsignedintcompzero=/*1'scomplementofzeroint16位的处理器为说,上面的代码是不正确的。应编写如unsignedintcompzero=这一正能出应试者是否懂得处理器字长的重要性。在我的经验里,PC机程序往错,那么我就扔出下面的追加问题,这些问题是比较难的,仅仅非常优秀的应试者能做得不错。提出这些问题,我希望看到应试者应付问题的方法,而不是答案。不管如何,你就当是这个吧…动态内存分配(Dynamicmemory等。这个已经在ESP中被广泛地讨论过了(主要是P.J. uger,他 让应试者进入一种虚安全感觉后,我拿出这么一个小:下面的代码片charif((ptr=(char*)malloc(0))==NULL)puts("Gotanullpointer");puts("Gotavalid这是一个有趣的问题。最近在我的一个同事不经意把0值传给了函数malloc,的输出是“Gotavalidpointer”。我用这个来开始讨论这样的一问题,看看被面Typedef在C语言中频繁用以一个已经存在的数据类型的同义字。也#definedPSstructs*typedefstructs*dPStPSs指针。哪种的。答案是:typedef更好。思考下面的例子:dPSp1,p2;tPSstructs*p1,p1为一个指向结构的指,p2为一个实际的结构,这也许不是p3p4两个指针。C语言同意一些令人的结构,下面的结构是合法的吗,如果是它做些什inta=5,b=7,c;c=a+++b;c=a+++因此,a=6,b7,c12Whatwillprint{char*p1=“name”;char*p2;memset(p2,0,20);while(*p2++=}Answer:emptyWhatwillbeprintedastheresultoftheoperation{intx=20,y=35;x=y+++x++;y=++y+}Answer:Whatwillbeprintedastheresultoftheoperation{intprintf(“%d,%d,%dn”,x,x<}Answer:Whatwillbeprintedastheresultoftheoperation#defineswap(a,b)a=a+b;b=a-b;a=a-b;voidmain(){intx=5,y=10;swap(x,y);printf(“%d%dn”,x,y);printf(“%d%dn”,x,y);}intswap2(inta,int{inttemp;return}Answer:10,10,Whatwillbeprintedastheresultoftheoperation{char*ptr=”Cisco*ptr++;}Answer:CiscoSystemsiscosystemsWhatwillbeprintedastheresultoftheoperation{chars1[]=“Cisco”;chars2[]=“systems”;}Answer:Whatwillbeprintedastheresultoftheoperation{char*p1;charp1=(char*)malloc(25);p2=(char}Answer:Thefollowingvariableisavailableinfile1.c,whocanaccessstaticintAnswer:allthefunctionsinthefile1.ccanaccesstheWHatwillbetheresultofthefollowing#defineTRUE0//somecode{//some}Answer:ThiswillnotgointotheloopasTRUEisdefinedasWhatwillbeprintedastheresultoftheoperationintint{}intchangevalue(int{}void{intx=10;printf("Firstprintf("Secondoutput:%dn",x);printf("Third}Answer:12,13,Whatwillbeprintedastheresultoftheoperation{intx=10,y=15;x=x++;y=printf(“%d}Answer:11,Whatwillbeprintedastheresultoftheoperation{inta=0;printf(“Ciscoprintf(“Cisco}Answer:Twolineswith“CiscoSystems”willbe再次更新C++相关题charstr1[]="abc";charstr2[]="abc";constcharstr3[]=constcharstr4[]="abc";constchar*str5="abc";constchar*str6="abc";coutboolalphastr1==str2endl;//输出什么?coutboolalphastr3==str4endl;//输出什么?coutboolalphastr5==str6endl;//C++ABBA?[C++中classBpublicABAclassBoperatorABAclassAA(constB&Anon-explicitB(可以有其他A&operatorconstA&);//sizeof用法有问题吗?[C易voidUpperCase(charstr[])//str{for(size_ti=0;i<sizeof(str)/sizeof(str[0]);++i)if('a'<=str[i]&&str[i]<='z')str[i]-=('a'-'A'}charstr[]=cout"str字符长度为sizeof(str)/sizeof(str[0endl;UpperCase(str);cout<<str<<以下代码有什么问题?[C难voidchar2Hexcharc)//16{charch=c/0x10+'0';if(ch>'9')ch+=('A'-'9'-charcl=c%0x10+'0';if(cl>'9')cl+=('A'-'9'-1);cout<<ch<<cl<<'';}charstr[Ilove中国for(size_ti=0;i<strlen(str);++i)char2Hex(str[i]);cout<<structTest{Test(int)Test()voidfun()voidmain(void{TestTest}cout<<(true?1:"1")<<endl;unsignedintconstsize1=2;charstr1[size1];unsignedinttemp=0;cin>>temp;unsignedintconstsize2=temp;charstr2[size2];structCLS{intCLS(inti):m_i(i){}}CLScout<<obj.m_i<<class{Empty();//Empty(constEmpty&);//~Empty();//Empty&operator=constEmpty&);//Empty*operator&();//constEmpty*operator&()const;//3.以下两条输出语句分别输出什么?[C++难]floata=1.0f;cout<<(int)a<<endl;cout<<(int&)a<<endl;coutboolalphaint)a(int&)aendl;//floatb=cout<<(int)b<<endl;cout<<(int&)b<<endl;coutboolalphaint)b(int&)bendl;//2.array数组的方法有什么错误?[STL易]vectorarray;array.push_back(1array.push_back(2array.push_back(3);forvector::size_typei=array.size()-1;i>=0;i)//array{cout<<array[i]<<}typedefvectorIntArray;IntArrayarray;array.push_back(1array.push_back(2array.push_back(2array.push_back(3//arrayfor( toritor=array.begin();itor!=array.end();++itor{if(2==*itor)array.erase(itor}void*mymemcpy(void*dest,constvoid*src,size_tcount{char*pdest=static_cast<char*>(destconstchar*psrc=static_cast<constchar*>(srcif(pdest>psrc&&pdest<psrc+cout){for(size_ti=count-1;i!=-1;--i)pdest[i]=psrc[i];}{for(size_ti=0;i<count;++i)pdest[i]=psrc[i];}return}intmain(void{charstr[]=" mymemcpy(str+1,str+0,9);cout<<str<<endl;system("Pause");return0;}charstr1[]="abc";charstr2[]="abc";constcharstr3[]=constcharstr4[]="abc";constchar*str5="abc";constchar*str6="abc";coutboolalphastr1==str2endl;//输出什么?coutboolalphastr3==str4endl;//输出什么?coutboolalphastr5==str6endl;//文章出 C++A和BBA?[C++中等classBpublicABAclassBoperatorABAclassAA(constB&Anon-explicitB(可以有其他A&operatorconstA&);//赋值操作,虽不是正宗的隐式类型转换,但sizeof用法有问题吗?[C易voidUpperCase(charstr[])//str{for(size_ti=0;i<sizeof(str)/sizeof(str[0]);++i)if('a'<=str[i]&&str[i]<='z')str[i]-=('a'-'A'}charstr[]=cout"str字符长度为sizeof(str)/sizeof(str[0endl;UpperCase(str);cout<<str<<以下代码有什么问题?[C难voidchar2Hexcharc)//16{charch=c/0x10+'0';if(ch>'9')ch+=('A'-'9'-charcl=c%0x10+'0';if(cl>'9')cl+=('A'-'9'-1);cout<<ch<<cl<<'';}charstr[Ilove中国for(size_ti=0;i<strlen(str);++i)char2Hex(str[i]);cout<<structTest{Test(int)Test()voidfun()voidmain(void{TestTest}cout<<(true?1:"1")<<endl;unsignedintconstsize1=2;charstr1[size1];unsignedinttemp=0;cin>>temp;unsignedintconstsize2=temp;charstr2[size2];structCLS{intCLS(inti):m_i(i){}}CLScout<<obj.m_i<<class{Empty();//Empty(constEmpty&);//~Empty();//Empty&operator=constEmpty&);//Empty*operator&();//constEmpty*operator&()const;//floata=1.0f;cout<<(int)a<<endl;cout<<(int&)a<<endl;coutboolalphaint)a(int&)aendl;//floatb=cout<<(int)b<<endl;cout<<(int&)b<<endl;coutboolalphaint)b(int&)bendl;//array数组的方法有什么错误?[STL易]vectorarray;array.push_back(1array.push_back(2array.push_back(3forvector::size_typei=array.size()-1;i>=0;i)//array{cout<<array[i]<<}typedefvectorIntArray;IntArrayarray;array.push_back(1array.push_back(2array.push_back(2array.push_back(3//arrayfor( toritor=array.begin();itor!=array.end();++itor{if(2==*itor)array.erase(itor}void*mymemcpy(void*dest,constvoid*src,size_tcount{char*pdest=static_cast<char*>(destconstchar*psrc=static_cast<constchar*>(srcif(pdest>psrc&&pdest<psrc+cout){for(size_ti=count-1;i!=-1;--ipdest[i]=}{for(size_ti=0;i<count;++i)pdest[i]=psrc[i];}return}intmain(void{charstr[]=" mymemcpy(str+1,str+0,9);cout<<str<<endl;system("Pause");return0;}C++/CC++/C常用语量以及对C++/C的理解程度,但考生的智力和软件开发能力。90BOOLfloat,“零值”if语句。(10分提示:这里“零值”0,0.0FALSE或者“空指针”intn与“零值”比较的if语句为:ifn0if(n!=0)BOOLflag与“零值”if语句:请写出floatx与“零值”比较的if语句:char*p与“零值”ifWindowsNT32C++sizeof的值(10分charstr[]= o”char*p=str;intn=10;sizeof(str)=sizeof(p)=sizeof(n)=voidFunc(char{sizeof(str)}void*p=malloc(100sizeof(p)三、简答题(25分1ifndef/define/endif2、#include#include“filename.h”3、const有什么用途?(请至少说明两种4C++Cextern“C”声//for(i=0;{if(condition)}//if{for(i=0;i++;)}{for(i=0;i++;)}四、有关内存的思考题(20分voidGetMemory(char{p=(char}void{char*str=NULL;strcpy(str,"oworld");}Testchar{charp[]=" oworld";returnp;}void{char*str=NULL;str=GetMemory();}VoidGetMemory2(char**p,int{*p=(char}void{char*str=NULL;GetMemory(&str,100);strcpy(str,"o");}Testvoid{char*str=(char*)strcpy(str,“if(str!={strcpy(str,}}Teststrcpy函数(10分)strcpy函数的原型是char*strcpy(char*strDest,constcharC++/C的字符串库函数,请编写函数strcpy能把strSrc的内容到strDest,为什么还要char*类型的返回String的构造函数、析构函数和赋值函数(25分)String的原型为:class{String(constchar*strNULL);//String(constString&other);//~String(void);//String&operateconstString&other);//char*m_data;//String4文章出 文章出自网魂C:C++/CBOOLfloat,“零值”if语句。(10分BOOLflag与“零值”if语句。(3分if(flag)if(!flag如下写法均属不良风格,不得分。if(flag==TRUE)if(flag==1)if(flag==FALSE)if(flag==0)floatx与“零值”if语句。(4分constfloatEPSINON=if((x>=-EPSINON)&&(x<=if(x==0.0)if(x!=0.0)char*p与“零值”if语句。(3分if(p==NULL)if(p!=NULL)if(p==0)if(p!=0)if(p)ifWindowsNT32C++sizeof的值(10分charstr[]= o”char*p=str;intn=10;sizeof(str)=6(2分)sizeof(p)=4(2分)sizeof(n)=4(2分)voidFuncchar{sizeof(str4(2分}void*p=malloc(100sizeofp4(2分三、简答题(25分1ifndef/define/endif干什么用?(5分)答:防止该头文件被重复。2、#include#include“filename.h”有什么区别?(5分的C\C++面试Q1:OSITCP/IPQ2:IPTCPUDP:Q3::Q4:请问C++Cstruc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论