C语言软件工程师笔试题大全_第1页
C语言软件工程师笔试题大全_第2页
C语言软件工程师笔试题大全_第3页
C语言软件工程师笔试题大全_第4页
C语言软件工程师笔试题大全_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

网络安全应具有以下五个方■的^点1

Mtt:信嵬,/器除并/权用户、:「屯成过18•或供其村用的游性,

光整性数抠木经统权不僮遭行改变的特性即信息在储备应付输过程中保持不被修改,不饿i«耳利2大

的特性.

可用性可被授权实体用访并按需求使用的制件.即当需低时能否存必所需

的体思.例如河络环境下拒留存.破坏网络和仃关系加的正常匕行等都喝r对可川竹的攻击।

可控性•对信息的K播及内容艮仃控制健力

可*查性।显现安全何逆时提供依据。f殁第一%分;域4概念及其它何谷题

I、关区字static的作用足彳|么?

这个限单的问的应少仃人能问答先全,在C谓才中,大过字static行.个明显的作用;

1).在国数体.一个被声明为梆亳的史m在这一函数被调用过程中鳖持意值不变.

2).A模块内(似《南数体外),个拔心明为伸右的变量可以枝模块内所用前数拜访,但不他林松块外其它南改

拜访.它是一个本地的仝局变量.

3).在模块内.小板声明为时仓的随数只可被这•穗族内的』,,用.那就战.这个腑数被跟制"声用'二口

模块的本地范畤内使用.(本地化敢据他代码范畴的好处和度婴性).

2、“引用”与指针的IX制是什么?

管、1>引用必维校初始化,指村不必.

2)引用初始化以后不作被改变.指针可以改变所垢的对僦.

3)不存住指向空依的引用,做是存在指向2值的指针.

指针通过某个招针变量指n一个对皇后,对它所指向的变量H接操作.限序中使用指计.科序的w读性差t而*用

本身就是H林便盘的别名.对引用的操作就是对打标变8t的操作.

流操作用《和力'M值操作符=的返回值、拷贝构造函数的梦数.认值操作符=的岁数、其它怙形郡旱器使用引用.

3、.h头支仲中的ifndef/defix/endif的作用?

存:防止该头文件被联红季用.

k^include与sindudc”门le.h”的M别?

kStandwdMbrai1-,Uih.h,『由行基从当前工作路较搜寻件引〃lfi】ah.

5、描述实时系统的票本特性

n.在特定时间内完成特定的任务,实时性与叫*性.

6.全周变量和同部变盘在内存中是育有区别?如果行,是什么区别?

答»全局变域储存在静态数抠区.局部变量在雄极中.

7、什么是平稳:叉树?

»:左右丁树都是平建二叉树H左右予树的涕收差值的绝对值不大「I.

8、堆榜海出样是由什幺原因导致的?

S:I.没育回收垃塌贲源2.层次太深的遂打调M

9、虫泡持呼算法的时间复束度是什么1答;0(/2)

10,什么函数不能声明为东南数?谷:constructor

n.队列和极有什么区别?纵队列先生先出.橙后进先出

12.不能做“itchU的参数类型答,switch的参数不能为实本.

13,局制变“I能否和全局交H男名?»;能,局制会杆艇全身。婴用全局变M,蠡耍使用“:丁

局部文盘可以与全局变量同g,在由数内引用这个变V时.公用到同%的局与变量,而不会用到全局变星.对于有

些插详器面才.在同一个的数内可以定义匕个同片的局出变盘.比如在两个馅坤体内也定义一个同名的场部变!I.

而那个马部变口的传用域就在那个做坏体内

M.如何引用•个已拄定义过的全局受染?

答、可以用引用头文件的方*.也可以用exicrn关键字.如果用引用头文件方#来引用某个在头文件中声明的全

喻变枇,假定你将那个变量与锚入IE么在母津明间会报惰.加梁你用cxtcm方式引用HJ.密定你犯I•同样的饰

俣,弟么在编洋期间不会报错,而在连接期间报播.

15、金局堂歇可不可以定义在可般多个.C支件包含的头七件中?为什么7

»、可以,在不同的C文件中以slulic形式来声明同名全局交*.

可以在不同的C文件中声明同g的全⑹变盘.前提足其中只能有一个C文件中对此受肽赋初值.就BI连接小会出馅.

16、但甸for(;I:)有什么问题7它是什么U慰?苦、和vhik(l)相网,尢眼慌坏.

17,do……*hik和while•”…du/什么区别?答,十一个陆环一■再判定,后一个判定以后再林阵.

18.statm全局变flt.局卿受fit.函数。仔jfl全局受fit.同建受脑、沟数

8、全局受■(外握变*》的说明之前向冠以static就构成了酢态的全局发■・全局变IIA身就是静6辅各力X,

栉£金煽堂用”[然也是仲杰储缶方代.这曲多在储缶方式上并无不问.这MX的区别星在」IL仲密金均受旧的作

用域是整个魂程中.”一个海程序由匕华源文件才1成时,北龄£的全行交7位3个海文竹中燃是立效的,而静£

全局变班则限制/K作川域,即只视定又谈受饿的聊文付内育收・在同源程序的其它源文件中不能快川它•HI

于静态全周变疑的他用域后见于一个滁之件内,只能为核源文扑内的雨数公用,因此可以避免4

起褶俣.从以上分析可以右由,杞同郊变最改变为称态受网后是山堂了它的住法方式即改变了它的生存期,把全

局变益改变为静态变量后足段变了它的作用域.卬*1了它的使用胞崎

static函数与3通函数作用做不同.仅在本文件.只在当前图文件中使用的函数应该说明为内部的致(static).内

部曲数应该在当前流文件中祖明和定义.对J可在当前温L2:件以外使用的解敛.应谈在个头文件中凌啕.要使用

这些由政的源文件要包含这个头文件

,tatic金属文量与*»的全属切育什么区H:、门“伞而宜:只初使化次,劭止在K■他乂件仙兀中被与”11.

8tMic局近交■和・《1|备交重有什&t・:static局部变盘只被初始化一次,下一次依战力:结果«!,

函蚊与普■函敷寿什么区索:函数《内存中只行一份,普迪阐数在例个嵇用用一份免收

19.程序的内存分配

».一个由C/C-,胡诉的出序占用的内存分为以卜几个部分

I.伐区<stnck)山城理褚白动分配用择.在放由数的参数值,同部变贵的值疗,其操作方式类也于数据结构中

的校.

2、堆区(heap)-•样由观序员分配开料.“汴倒不开佬.程序终止时可俺由OS回收.注毒它与数据站构中的

堆足两回小,分配方式倒是美似于倭衣,呵呵.

3、全局区(静态区)(static)一全局变量和静态变fit的储番地放在侬的.初皤化的全局变贵W静态要必住

块区域,未初妁化的全局堂旦和朱初始化的阱念亶破在相邻的另一坎区Mi.楫序终止后由系统开释.

4、文字令城区一常笊字符出就是放在这里的,程序线止匕由系统开释。

5、程汴代码区一“放的数体的一边制代码

例f程序

这是一个前笔写的,非常详细

//■ain.<-p|>

intHR;〃全局初蛤化区

char*pl;〃全局未初始化区

■riinO

(

intb:栈

chars[]="abc"://4i

char*p2;〃校

char*p3="123456*:〃123456\。在加・区・p3在战上.

staticintcRi〃全局(酢态)初始化M

pl=(char*)onHoc(10):

p2=(ch.r*)«alloc(20);〃分田有乐出10和20字节的区域就在奉区.

8<rcpy(r>l,~123456"):〃123456M>fit在常餐区,结评器可能会上它与同所向“123456”优化成•个地》.

)

20、说明维和假的必利

捽;堆(heap)和桎由ack)的区别

<1)中训方式

suck:由系统自动分配.例如,声明在的做中一个总部交量inib;系统自动在栈巾为b开时交向

henp:需要程序员自己中语.并折明大小,在c中aalloc与数如plMchBr*)Halloc(10);

在C一中用new这尊符,如p2Xchar・)a”oc(10):但是注意口】、成。身是在税中的.

(2)申请后系统的响应

我只耍栈的由余空的大于所申请空间,靠银称为程序提供内存,否则林报#常提示修沿出。

堆:菜汶川道掾作宪统行,个记录用H.;■!.'i."1娱境收到杵序的申请时.会谢方让料先,不找篇

个空何人于所申请中间的堆站点,热后梅俵姑点从以喂勃点随衣中删除,并出该拈点的中M分配给年序,另外,q

1大名牧条姣.会在这貌内存空,1中的首地址处记就本次分闽的大九这样,代研中的小lmeifi句才AU:确的开

用本内存空间.另外,由于找到的堆钻出的大小不一定正好等于申请的人小,系统会门动的:的条外的那55H4新改

入闱暇贡表中.

<3>申请大小的限制

栈:在Mndo«下,极是向低地址扩快的数评浦构,是块连接的内存的区域・这句耳的强出是根膜的地址加收的

以人力hl总系统预先规定好的,。*1业01$下,根的人小足2M(也行的说是IM,总之足一个垢库时就询定的盒数,,

如果中道的空间邮过梯的期余空同时.将探水6T门ow.因此.碓从栈获得的空向较小.

堆;地足向离地址犷展的敢枢结构,是不连续的内疗仅域,达是由「条烧足用精衣来储苗的讯暇内存地拽的,门然

是不迂垓的.而蛀我的老历方向是由位地址向盆地址..堆的大小受般于运以机系统中有效的虚毋内存.削比M见.

堆於格的空间比收K鬲.也比较大.

<4)申请效率的比牧I

校:由系统门动分配,速隙较快,但程序时是无法柱制的.

堆:品lllne分用的内存.一择速或比较慢,洞且春品产生内存碎片,不过用起洪金方便.

用外,在W1W0IS下.好好的方式是用YirtsdAlloc分配内存.他不是在博.也不是在快.而是在稹在进程的地

址空间中保留一块内存,虽然用起来生不方便.但是速度快,也最灵话,

(5)堆和栈中的储品内霭

校:在函数谣用时.势一个进桎的是主的数中后的卜一条指令(的较调用由句的下一条可执行培甸)的地址,然后

足曲数的各个梦数•在大多数的C纲洋HS中.当数是由右在左入栈的,热标足由数中的局部变SI.注意静态受量足

不入校的.

当本次港用碑用终止后.耳部变量先出栈,然后是琴数,公后栈顶指斜指向最开始存的地址,也就是卡.脩数中的卜

•第宿令.程序田设点近坡运行.

堆;一样贴住堆的头部用一个字节存放堆的大小.堆中的具体内容由程序员安樟.

<6)存取我率的比较

chursld^"auauauaauauauaa**;auauauaauaa是在运忏时刻赋值的।

chnr*s2-"bbbbbbbbbbbbbbbbb";而bbbbbbbbbbb是在端ifB夕就确定的:

但是,在以后的存取中,在栈上的物加比指针所指向的字符串(例卸堆J快.

比如,

ainclude

voidantnO

(

chara=l;

charc[]="1234567890,:

char*p="1234567890":

a=c[l];

H=l)[l]:

return;

)

对应的汇珀代码

10:a=c(l]:

0OI0i0678A4W-l«MJ*cl,byui>lr[vbp0Fh]

0010106A88IDItmovbyteptr(ebp4).cl

ll:a=p[l];

nOIOIOfinRBSHirm-.vedx.duor(ij»tr[ebp-l-lhj

0010l0708A1201Boval,bytcpir[cdx*l]

QO4OIO738845FCenvbyteptr(ebp4],nl

弟一科在读取时直接就把字符卡中的元家愎手寄存黯Cl中,而第二朴则要先把指叶位读到edx中.存根机Odx读

取字符.明解馒了.

21、什么是依伤详.何时秘密依幅详?

??»依墉卡乂称为预处耳.及被叫代码文4、的件换工作,处H七开头的柏飘比如揖贝:include包含的文件代碣.

■Mine来定义的替换,茨H0译等,就尼为说译做的依缶[作的阶Ia王要处谭中I如的陨编译指—饮运用报令

指示了作程序正大编译前就由编评器送行的探作,可以放在杵/'I'的行何位值.

c携洋系统在对程序进h通R的境评之.说.无迸切发处理.

(:收的!11处・功*±*有以下三*11•*定义2)文件包含3>条H”评

22.关悦字cwt是什么含意?

存;“const诙味好常畋”业余M.“只证”正确的答案.

congtinia;"足一个常整型数

intconsta:“是个常整型教

constint帕;a是一个指向常整里数的加计1(也就是.整型数是不可修我的.但折计可以).

int♦constM:•个指向整生效的常招舒(也就是81.指的指向的弛型效足可以住也的.©指W•是不可,改的)

intconst*»comx:a是一个指向常整里数的审指针(也就是说,指针指向的赛3!欧是不可修改的,同时指针也

是不可修改的)

I).K爱字const的作用是为给读你代N的人传达1•常有川的治息,实际上,声明一个参数为常fit品为J•告诉了用

户这个参数的桎用目的.也U你曾花很多时间消理冗它人招卜的垃W,你裁叁很快学会蜷剧这点余外的信£.C3

达,情信用const的程序员很少会留下的垃圾计别人来消理的.)

2).通过用优化器一些附加的信息,使用关辕字c&nsi也许能产牛更素凑的代用.

3).合理地使用关谜字ccnst可以使篱|译腓取自然地保护那些小明也被也变的学敛,防止乳被无比的代眄修段.韵

而自之.这惮可以减少1»吨的显现

23、关键字volatile向什么音点并恰出三个不同的例

音:•个.(一“1球ilu的变小是说这变量彳他会被息密不利地改笑.iiff.修谛器就不会去假设这个蹙It的色

r.精确地说就是.优化滞在用到这个变量射&发珏次都小心地履新读取这个受用的值.而不足使用除存在骞存溶

里的各份.下面是volatile受成的几个例子:

1).并行设务的硬件蓄存器(如:状态田存瑞》

2).一个中断RK务子程序中会拜访到的非自动,支后(Mn-iwl<xnulicvuriables>

3).安统科应用中校几个任务共享的变M

I),一个卷数既可以是const还可以是volatile吗?说明为什么。足的.一个例子足只读的状态寄存:5.它品

丫。1八”。因为它可能板基想不到地强变.它是const因为性号不陶速试图去愫改它.

2).•个指计可以是v.latilc叫?说明为什么.是的•层管这并不很常见。一个何干是巧一个中服务了年序修该

一个指向一个buffer的指针时.

3).下面的的数仃什么错误:

intsquare(volatileint»ptr)

(return*ptr•»ptr:

I

这段代码的行个感作剧.这段代码的目的是用来退指gi*ptr指向值的千方,但是由于*ptr指向-tvolatile

致,摘洋器将产生类似下面的代码

inisquarc(volali1cini*ptr)

(intn.b:a*ptr:b-*ptr:returnn»b:

)

由IF”r的伯可能被jfiflM:到他诬变,因此aVb可能是不同的.站梁,这段代码百法返不是你所助坐的磬方做!

正确的代码如下;

longsquare(volati1cint*ptr)

(

inta;

a=«pir;

returnB♦a;

I

24.一钟址本的数据榄取

答।按照数据结构类举的不同,揩位据模型划分为层次枚型,网状梭中知关系模型.

25、靖构与联介行和

Bi(]).岫构和联合都是由多个不同的数据大型成员如成,仅在仃何国一时划.联台中只存放了个被喝中的脱

员(所有皮员共用块地址空间).而结构的所有员用存在1小同成员的存放地址不问).

(2)M于联合的不网成员就(配将会对其它成,垂写.鼠先成行的伯就不在住了・前HT•培构的不问成姑蹴依立

不归响的

26,描述内4分配方式以及它旬的区别?

S>1)从静态储备区域力•配•内存在程序埸计的时候就C住分在好,区块内存在程序的整个运"期何都存在•第

如全属受fit,static变GL

2)在横上创建,在执行函数时,讷故内总部费M的储多取元都可以在栈上倒生.由政执行终止时这些体力单元n

动被开修.柱内〃分配运算内置r处理题的指令生。

3)从堆上分配.为国:功叔内存外配四序在运行的时联用《811。。或ner申请I.,内存.|»序员自己,应

在何时用free或dele""/叫存.动态内春的生存或由鹿小员决定.使用非常义■语,包阿超也展学

27,诂说出const切define相比,有何优点?

»:Consl作用:泥义常侑、修饰函匕於数、假饰函放返回W三个作Hi.被Const修艳的东西福受为岸觎保护,可

以ffi防遨外的支动,能提高程序的他壮性.

I)const常St行数突荚型,而宏常盘没也敛现类lb蝙汗器可以MiWK避打英里安全检仃.而对耳存只造行字为

出按,没6类型安全检今,井口在字衿砂排可能会产生点料不到的错误,

2)芍”集成化的调试工只可以Mconsl常星通竹调试.但足不能对安常用迸行调试.

28、蔺述数组与指计的区别?

答,我杷要么在静态储备区被创建(如全局数由).要么在机上被创状.指机可以晓时指向任总类里的内存块.

(D修改内宓h的差别

chara口="hello";

alO]='(:

char*p="world";//汴1sp指向常Gt字符申

l>(0]='X’://安漆器不能发觉该信次.运行时铝漠

<2)用达/符sizef可以无。出敛殂的容贵(字W数〉.Siteoi(p).p为指针得利的是一个指计变量的中“效.

而不足P所舒的内存存量・CM/C用有没有办法知道折忖所担的内存容fib除寸在申请内存时记住它•注意当数组

作为函数的参数进行传递时,该数组自动退化为同类•》的指针.

chara[]="hell。world";

char*p«a:

cout«sizeof(a)«endI;//12字节

cout«sizeof(p)«endl;//1字节

运算故祖和棺计的内存容量

voidFunc(chara(100])

(

cout«sizeof(a)«endl;//4字节而不是100字节

I

29.分别巧出BOOL,iniJloal,抵舒类T的复量a与"零”的比较语句.

挣:HOOL:if(!n)orif(a)

int:if(a«0)

float:constEXPRESSIONEXP=0.000001

if(a<EXP&fia>-EXP)

pointer:if(a!-M.L1.)oriF(aMILL)

30.仙何到定段程序是HlC编译程序还是由Ci编译程序编译的?

答:Sifdef__cplu*plus

cout«*c*+r;

Seise

cout«"c":

Sendif

31、论述谷船数的啮散的优项方

帝貌宏曲政

处理时间制讨时ftirtEtrW

*8[类取没有梦tSXN向亚..形金类型

处理过杵不分圮内存分配内存

用序长度会长不变

killif.®小占运什时间两川和通回占川I响

32、用两个段宏观•个队列的功能?要求吩出・法和思RH

省,设2个代为A.B.一开始均为空.

入队:格朗元素push入枪A;

出队:(D划定枚B是否为空।(2)如果不为空.则将枚A中所育人家依次pop出井push制校&

(3}柑桎H的检顶兀米]”,出:

这样发现的队列入队和出认的手牌及亲度都汪是0(1),比上面的几抑方法要好

33、嵌入式系统中外常整用我无外荷i坏,你怎么样用「tWT死砧H呢?

籽।这个用题用几个解决方案,我仃选的方案是;

■hile(l)

(

)

一线程序员史中爱如卜方案:

fort;;)

(

J

第三个方案是用goto

Loop;

KotoLoop:

应试者如管出上阖的方案•这说明或者他是一个汇编谙方程序员(这也许是好事〉或看他电一个想进入新揪城的

MSICFORTRAN程序员.

3".位煤作(Bitmanipulation)

S:联入式系统总是要用户对变舱或寄存器进行位操作.蛉定个整??变量a.导两段代码,9,个股!1tl的bii

3.第二个消除a的bit3.在以上两个搽作中.要保得其它便小变“

好这个H8S有种星本的反应

I)不如道如何下F.该假面"从没做过任何战入式系统的工作.

2)mbitfields.Bitfields是技协到。语自死角的东曲•它保证你的代码在不同旗谱遇之间是不可标低的.同

时也保班了的你的代码是不可事川的.我最近不幸看到Infineon为共版更杂的通信芯片3的驱动程序,它用到J*

bitfields内此完全时我无用.冈为我的编评器用箕它的方式来实现bitfields的.从遇他讲:永远不要让一个

。嵌入式的宓伙拈丈际硬件的边.

3)用Sdefim-sWbit“asks操作.这是一•个有极玛可移帧性的方法.是应该破用到的方法。喊住的解决方窠如

T:

WofineBIT:!(0x1«3)

stfiticinta:

voidsetbi(.3(void)

(

a=BIT3;

)

voidclearbit3(void)

'BIT3:

)

•线人。爱为日就他消珠他血定义,个掩码8JH定义•些说叫常数,这也是可以接受的•收助望行到几个快点:说

明常改、=和&=、掾作.

35、拜•访山定的内存位置IAccessingfixe«ln<M>iy10cHiions)

捽;俄入式素捶经常具有婴求界岸员去开iA某特定的内在位置的特点.在某1凸'中.1•文谀置一葩端地址为。蟠7M

的整型登做的的为Oxtut%.编译器是一个纯棒的ANSI编洋瑞,当代码去完成这•任务.

这一向以测试你是否知道为了拜访一绝对地垃把一个整型数强制轮换(lypecust)为一指计是合法的,这一付题的

实现方式施若个人风格小网而小同•欢型的类似代码如下,

int*ptr:

ptr-(Im*)0xfi7a9;

•ptr=0x«a66;

A“巾obscureapproachis:

•个收的池的方法是:

«(ini*const)(0x67n9)=0xw»55:

即使你的M咏更接近第二种方案,但我建议你任面WH•使阳笫-神方茎,

36.中断<Interrupts>

答,中断是嵌入式祭统中充要的纲成部分.这导致「很多编评开发商提供一抻炉展一让标博C支持中断.凡代表

“玄是,产生了一个新的关键字inten-upt.下面的代码就使用了Jniernei关说字去定义了一个中断服务于

程序(1SR3谓部论一下这段代码的.

interruptdnuhl?ro«it>ute_nrea(dnublrradius)

(

doublearea=PI•radius*radius:

prinlf《飞nArva=M",area);

returnarea:

1

这个融敷仃太多的错i吴了.以至让人不知从何说起了:

DISK不能返回一个俏・如果你不懂这个,那么你不会被您用的.

2)ISR小使传递专城.如果停没有看到这一点,你被雇用的机会等同明

3)在许U的处理器,.编译潺中,浮点一样林丛不可St入的.ft•些处理器•幽洋界篙要让加处的寄存器人栈,仟些蚣

理制编译器就是不答应在1SR中做浮点运算此外,TSR应谟是短而存效声的,在】SR中做浮直运羯是不明智的

1)与第三点一林相承,MinifO经常有承入的性能上的问题。如果你去棹了笫二和第四点,我不会太为&你的.

不用说•如果你能得到后两那么你的被雇用前景越来粕比明了.

37、动态内存分配(Dynamicnfmoryallocation)

答;取皆不像*嵌入式运算机那么常见,泯入式系统还是有从城<heap>中动态分配内存的过程的.那么寐人式系

统中.动态分旭内存回能发生的问题是什么?

这里.我期熨应试者能提到内存碎片,碎片收集的何题.变8t的扑行射向等等.这个主总已经化ESP杂志中帙广泛

坦讨论过了(主要是P.J.Plauger.他的说明远远超过我运里能梃到的任何说明).用的问过头粒一下这些柴志

吧!比应试行进入种虚华的安全总世盛,我a出这么个小xn:

卜面的代码片段的输出是什么,为什么?

chnr*ptr:

if((ptr-(char•)■»1loc(O))==NULL)

putsl"Gotamillpointer"):

else

puts("Gotavulidpointer*):

这是•个的问8!.趾近在世的一个网里不杼老把0伯传给了就数malloc,解到了一个合法的指朴之后,我才想

到达个同时.这就是上面的代码.谈代码的输出是“Got“validpointer-.我用这个来开蛤讨论送样的一向冏,

Cfi被面试占是否想到眸例作这样做是正输.得到正确的答案出然币要.但削决问题的方法和你做诀定的苓本原理

更重要雪.

38.Typedef

答:Typodef花Tift齐中班系用以k叫个己片存在的数抠类型的同%字.也可以用预处理器做型似的».例fcJ.

摸索一下下面的例子।

sdefinrdPSstructs*

lypvdefstruct$•IPS;

以I泗种情形的意图就是要定又dPS和iK作为4指向结构s指针。嘴怦方法史好呢?(如果由的诘)为什么?

达过一个II常微妙的问88,仔何人存对这个问郎《正当的原闪)战应力快拈声的.许案是:wpMW更M.锹/下

面的例F:

d?Spl,p3;

tPSp3,pl;

掂一个犷展为

s<ruct8»pl,|>2;

上面的代码定义pl为个指向结构的指.p2为•个文际的结构,这也许不是你想要的,第二个例了正确地定义了

P3和乂两个折忖.

39、用支Ge的出下血的定义

谷।a)一个整型欧<Aninteger)

b)一个指向第型IS的指针(A(jointertoanintCKer)

c)一个指向指针的的fiitt,它一向的推计是指向一个第型收(Apointer<oopointertoaninteger)

d)--个有1。个整型数的数图(Anarrayof10integers)

e)一个有10个指针的数组,询指计是指向一个整里数的(Anarrayof10pointersUiinteRers?

D一个指向有10个整邕改改组的指(Apointertoanarrayof10integers)

g)一个指向函物的指针.该的数有一个空心参数并返同一个锭型数<Apaintertoafunctionthattakesnn

integerasanargumentandreturnsaninteger)

h)•个右10个指针的JMft.M指计指向,个第故・该脸故有•)整级冬破井返回,个史!»«[(Anarrayoft«n

pointerstofunctionsthatlukvaninteger

argitaentandreturnaninteger)

答案是:

a)inta://Aninteger

b)int»a://Apointertoaninicner

c)int**a;//Apointertoapointertoaninteger

d)inta:10];//Anarrayof10integers

H)ini»s[I0.//Anarrayof10pointersinIntegers

Dint(«a)[10]://Apointerioanarrayof10integers

g)int(*a)(int);〃Apointertoafunctionathattakesanintegerargumentandreturnsaninteger

li)int<*a[l0])(int);//Anarrwyof10pointerstofunctionsthattakettnintegeraiKunenlnndreturn

aninteger

40.说明局他变*、余后变量将抑态变累的含义.

41.写一个“标准”宏

»:交换两个与救债的宏定义为;.MefineSVAHHJ八

(a>=(a)+(»>);\

(b)=(a)(b):\

(«>«(a)-(b);

就入两个参数,铜出较小的一个:«d.'fineM1MA.B)((A)<(B)r(A):(B)>

衣明I年中有修少杪(忽略闵年问题)«edefinvSECONDSPERYEAR(60*60•24•365)11

"defineD0lBI£(x)x・x与ffdefineDOUBLE(力((x),(x)>

i=5»DOLW£(5)ii为30i=5«WXBI.R(5):i为50

已知一个数殂table,用一个宏定义.求出数据的元豪个故

^defineSTBL

WefineSTBL(sizpof(table)/sizeof(table[0]))

42.Ac和B.c两个c文件中使用了两个相同名字的static变艮编评的时帔会不会仃佝虺?这两个static受81会

储存到哪里,栈还是即诚力其他的)?

名।static的全局交量,衣明过个变量仅在本校块中若京义.不会制啕其他模块。

他们部放八数据区.但是坡彳出对他的的命N是不同的.

如果师使变就在年他怏块也向同义的话,需收使用cxiurn美展字.

43、个单向碇表.小知道头”力.•个指计指向具卬的个E点.“如何刮除这个折忖指向的口点?

8<利这个IMI伸向的next节以伯copy到本节点,格next指向R«L>ncxi.4地后制除原rwx,指向的V心.

V,.部分:程序代码评判五者找错

1、卜面的代码0出是什么,为什么?

voidtoo(void)

unsignedini”二6;

intI)~20:

(a«b>6)?puts(">6*):puts(-<:6");

)

这个问也测R你是否懂得C语三中的乘数自动转桃版则,投发觉仃些开发才脩得极少这些东西,不管如何.这无行

;;传型回电的;?臬是励出班D6”.原因是当衣达式中存在行苻号类由和类T时所有的推作数部门动耳换为

无符号类型.因此20变成j•一个聋常大的正镀数,所以博表达式运。出的结果大于6.这一点对于微当嫉繁川到

无符号数总类型的嵌入式质拉束过是下常羽要的.娟果你答箱/这,问物,你也就利了叫不到这怜工作的边隙.

2、评判下面的代码片断;

unsiKnodinizero=0;

unsignedintcoapzerc-OxH-H1':

/♦I'scomp1eaenxofzero*/

时干,个intK不是16位的处理器力说.上面的代码是不正曜的.它编4如N:

unsiwivdinivuopxero='0;

H一问期山正能报还出应试存是行懂得处理片字K的屯贽件.在我的体会里.好的代入式行扉员非常准妈地明白旅

件的斓甘加它的局眼,然而PC机程序在杜纪硬件作为一个无法遇佻的想恼.

3、C语言网宣:些令人覆动的抬构,下面的结构是介法的吗,如果是它铀些什么?

inta=5,b=7,c;

c-n++"b;

这个问时然做为这个刈验的一个愉快的结尾.不管你相不相侑,上面的例子是完全合手语法的.内四是蛇译器如何

处理它?水平不高的编译作者实际上会争辩这个何的.根据最处理嵌*1.编建55双力能处理尽可能所右合法的用法.

因此,上面的代码被处理此:

c二♦b;

因此,这段代码排行后«=6.b=7.c=12.

如果你如道答案.或猜出正债答案,做得好.如果你不知道谷关,我也不把这个当作问题.爬发觉这个河题的取夫

好处拈这骷一个关于代码峭格,代蚂的可遣性.代码的可修改性的好的话也.

4、设有以下说明和定义,

typedefunion{longi:intk[5];charc:"DATE:

structdata1intcat;DATEcow;doubledog;Ft<K>;

HATfmax;

则谓旬print"rd”.siwof(structdMe〉・sizcof(max)):的执行结果是?

._:52.DATE是一个union.交量公用空间.里面酸大的变量类型是ini[5],占用20个字节.所以

大小是20

daw/£-^struct,勾个交量分开占用空H.依次为in”+DATE20♦double=32.

所以结果是20♦3252.

当卧…在某些16位褊犍器下,im可能是2字节.嘉么结果是int2♦DA1EIO♦doubles_:■

6、请写出F列代码的皆出内容—;

0includec=**a:

■ainOd=10*a««;

printf(ab>c,di%d.Xd.Hd",b.c,d):

inta,b,c,d;return0;

a=IO:

)char*dest=(chdT»)rmlloc(len'l):/5Mt

答:10.12.120个空间

6.写物卜列代码的愉出内容char*d=desQ:

aincludechar*stsrcCenT:;〃指向irtR一个字布

iniinc(inta)t»hiie(len-20)

(-;

returna);*d二0;〃尾部)细\0

1printf(**%s\n".dest):

ini«ulti(lm»a,int»b,lm*<)frwfdesi);//使用完.应当开样空时.El免55成内存

(jl-露

return(*c*ulb);return0;

11

typedefint(FWClXintin);方法2i

lypedofint(FUNCZ)(int*.int».ini*):Sinclude

voidshov(RJNC2tun.intarcl,int*arx2)^include

(iMiinO

INCO^inc:(

initemp-p(<«•«!);charKlr[]-**h<?llo,rorld*';

fun3tnmp.larcl.arg2):intIm-strlpn(str):

printf("%d\n",»arfi2);char-t;

)for(inti=0:i

Kiin。(

(t=str[i];

mla;str[i]=strrien-i-lj;str[len-i-ll=t;

$how(rnulti,10,ft<i):1

return0:prin【f("%s”,sir);

)return0;

noI

7、话找出上面代码中的所以铝隈8,请回下面程中有什么精读?

说明:以下代码足把一个字符中循序,如-dbcd-minta[60][250][1000],i,j,k;

后变为"dcba-for(k-0;ky000;…)

l、SincludestriIIK-h”ror(j=0:j<25n:j-H-)

2、mnin()ror《iR:i<60;if

3、\atl][j][k]=O:

4、char*src"hello,wor1d-:答案।把Wi环港句内外换一下

5、char*dest=!tL'IJ.:9、请向F面程序会显现什么情形?

B、intlen=strlen(src);・adefineMHK一CB500

7、dost=(char*)ma1loc(lcn);void1jiiQueryCSriKi(StructMSgCB*|*sg)

8、char*driest:(

9、char*K=src[lpn];unsignedcharucGidNg

10、while(len-!=0)

11、d—s~;for(uiXwlXu«i-0;utCudNwKWAXCB;VCCWW_Y・+)

12、printff-%s".dost);(

13、return0;

bk)1

的答哀;死端环

方法I:10、以卜3个有什么区别

mtaainOIchar*constp://ttHftfif.P的依不可以他改

charesrc="he】1。,world";有向方景的彷鼾.带向的常看值不

intIon=slrlcn(src);

□J以改&a+l不是而堆址H・泰依会认万加•个a敷祀的偏杵.

consIchar»p:/,和charconst*p虻储悻/一个K[出的大小(4例是5个佃1》

il.二出下面的结果int♦ptr=(mt*乂必・1);则plr实际是NH[5]),也就

charstrl(]="ubc";是a*5

chnrstr2(]-"abc";母同如卜:&HJS故*若HI.式贽型为ini(*)⑸:而绢

constcharstr3[]-"ubc";什加I耍根据指计类学加上一定的值.

constcharstr4[]-"abc”;不网荚型的指件+1之后增加的大小不内・a是长魔为5

constchar•strS»-abc-:的intV(也指纤,所以耍加5*sixeor《int),所以ptr

constchar»sttfi-"abc”:实际是H5J.也是卬1与(4公1)类M是不一•朴的(这道

char♦str7,**abc*:10*9).所以“r【TRiJJCAsiaool

chnr*str8"abc”;a,fta的地址是一徉的.但悲思小毋.a是致祉。地址.

cou«<C(str!八slr2)««>dl:也就是a[。]的地址.&H是对宝(ttfi)首地址,cl兄

coin«(81r3-sit4)«endl;数班【;一元素的地址,即31],*1是F一个对象的地

cout<C(str5-str6)«endI:M.Bla[5].

cout«(str7str8)«endI;14、请问以下代码仃什么问越:

结果足,0011intmrtiriO

解吞;strl,sir2,sLr3.sir4是数ffl变“,它们行程自(

的内存空间tchara;

向str5.str6.str7,strH是指计,它力指向相同的常量char♦str^Jta:

区域.strcpy(str,"hell。");

12、以卜代码中的曲个sizef用法有间BJ吗?printf(str):

voidVppor€a»(charstr[]>//将sii■中的小耳reiurn0;

字母的操底大写字母1

(没育为sir分配内存空间.将会发生非自

for(size.ti=0;i间区出在招一个字号出〃耨进■个字符受修箱针所指

if<'a'<=str[i]&4tsirtiK^x')地址.虽然"J以正编输出豺果.他因为睡界进行内在设

str[i]-WA');与而导致程序朝溃•

1char*s=*AAA";

charRtr[J="aRck";printW,s);

cout«'l!•字符K或为:*«sfOl-'B,:

sixeof(str)/sizeor(str[0])«ondl;printf<"%s".s);

UpperCase(str);有什么错?

cout«str«endl;"AM*是字符申常V.s是指计.指向这个字符串常量,

弃;南数内的sizeof有同黝,根据语法.sizeoftBI用所以声叨6的时愠截百问飕,

于教组.〃能测出静态数组的大小,无法检JW动态分陀cosntchar・”"AAT:然后又因为是常贵.所以对足8[0:

的或外算数配大小-函数外的str是•个砂态定义的数的贼值操作是不合法的.

扭,因比其大小为6,函数内!i布向15,有以下表达式:

字符串的指针.没方肝何额外的。数川相关的信息.因inta=218;b=d;inlconstc=2J;cxxt»tint*d=ta;

此sizeot作用于匕只将其当指针首.一个指计为4个int»conste-&b:intconst»fconst-4a:

字节,因此返PH.请何卜列衣达式哪线会被痴降特禁止?为什么?

13、写出输出结果♦c=32:d=4b;»i1-13:e=3l:c=fiji:f=Ox321f

sain。*c这是个什么东茱,禁止

(*

温馨提示

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

评论

0/150

提交评论