嵌入式培训c基础强化训练_第1页
嵌入式培训c基础强化训练_第2页
嵌入式培训c基础强化训练_第3页
嵌入式培训c基础强化训练_第4页
嵌入式培训c基础强化训练_第5页
已阅读5页,还剩115页未读 继续免费阅读

下载本文档

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

文档简介

1华清远见嵌入式学院LINUXC编程秘籍V3.02一LinuxC编程前奏

GNU编译器gcc预处理:gcchello.c-E-ohello.i调用预处理器cpp,完成诸如宏展开、处理条件编译、删除注释等工作。一般生成.i文件。编译:gcchello.c-S-ohello.s调用编译器cc1,把源程序翻译成对应于目标系统的汇编文件.s。汇编:gcchello.c-c-ohello.o调用汇编器as,将汇编指令翻译成机器指令,生成可重定位目标文件。链接:gcchello.c-ohello调用链接器ld,将生成的可重定位文件与相关库文件链接,生成可执行目标文件。3二、典型C程序实例概览4二典型C程序实例概览

一个简单的LinuxC程序实例分析LINUXC编程风格1、适当的空行和空格,空行一般可以出现在逻辑块之间。2、一定要有缩进,代码块中的代码一定要缩进,无论是函数体、循环体、switch多路分支和普通复合语句。(注意,C语言是一种“自由体”语言,程序中的所有空白符都与逻辑无关,只起排版作用,因此空行缩进等格式对语法来说不是必须的)3、适当的注释,程序具有一定逻辑和算法复杂度的时候,在关键的地方做好注释。写注释是一种修养。(注意,注释要写代码的功能,而不是其原理)4、LINUXC风格中的函数名和变量名一般用小写字母加下划线,比如变量apple_tree,而不是像在其他平台中会用到诸如AppleTtree这样的变量名或者函数名。(当然常量通常用大写字母表示)5、最好按照规范写代码,代码不仅自己将来要看,而且经常是要给别人看的,不要自成一体。5二典型C程序实例概览

一个简单的LinuxC程序实例分析#include<stdio.h>

包含另一个文件该行告诉编译器包含文件stdio.h中的全部信息。文件stdio.h是所有C语言编译包的一个标准部分。这这个文件对关键字输入和显示输出提供支持。/*一个简单的LinuxC程序*/注释符号/*和*/中包含有助于使程序更清晰的注释性内容,她们只是为了帮助读者理解,在编译时将被编译器忽略。{函数体的开始这个开始花括号标志着组成函数的语句的开始。而结束花括号(})则标志着函数的结束。所有的代码块都必须用花括号括起来!intnum;声明语句这个语句表明您将使用num这个变量,并且它是int(整数)类型的。num=1;赋值语句该语句表明把值1赋给num这个变量。6二典型C程序实例概览

一个简单的LinuxC程序实例分析char*pstring=“helloworld”; 定义字符指针变量在定义变量的同时,我们可以对其进行赋初值,这样的赋值叫做初始化。对于静态存储的变量,初始化必须用常量而不能用变量。for(num=0;num<7;num++) for循环语句控制循环体中语句的执行次数。printf(“%s\n”,pstring); 调用库函数printf()printf函数负责把变量pstring按照你指定的格式“%s”输出到标准输出设备上(也就是屏幕)。return0; 返回语句C函数可以给他的使用者提供或返回一个数值。现在可以暂时认为这一行用来满足ISO/ANSIC对正确书写mani()函数所做的要求。} 结束显然,一个程序必须以一个右花括号中止。7二典型C程序实例概览

main函数intmain(void){…}good这行代码声明了一个main函数,一个C程序(我们不考虑一些例外的情况)总是从被称为main()的函数开始执行的。int指明了main()函数的返回类型,这意味着它的返回值类型是整型,这个返回值返回给操作系统。圆括号中写了void,表明这个简单的例子不需要外界传递任何信息给它,相反,如果main()函数需要接收参数,则可以写成:intmain(intargc,char*argv[]){…}其中argc是参数个数,argv是一个指针数组,这是main函数的标准声明形式main(){…}bad你可能会看到这种老版本的C代码,C90勉强允许这种形式,但是C99标准不允许,因此即使你现在用的编译器允许这种形式,你也最好别这么写。voidmain(){…}bad有些编译器允许这种形式,但是还没有任何标准考虑接受它。因而编译器不必接受这种形式,并且许多编译器也不这样做。总之,请使用标准形式,那样当你把程序从一个编译器移到另一个编译器时也不会有问题。8三、数据类型9三数据类型

基本数据类型常量整型常量和浮点型常量整型:123,0123,0x123ff浮点型:3.14,3.14e3,3.14E-2符号常量(即宏替换)#definePI3.1415#defineLIM32字符型常量和字符串型常量字符’a’,’\0’,’\n’,’\027’,’\x1ff’;字符串”a”,”helloworld!”表示不可见字符有三种方法:1:使用ASCII码,例如:charbeep=7;2:使用转义序列,例如:charbeep=‘\a’;3:使用转义字符,例如:charbeep=‘\007’;//或charbeep=‘\x07’10三数据类型

常量数据和变量除了变量和常量的区别,各种数据类型间也有不同。一些数据是数字,而另一些则是字符(包括可见字符和不可见字符),而单就数字而言,我们又可以细分为正整数、整数、实数等等。C通过识别一些基本数据类型来区分不同类型的数据。原来的K&R关键字C90关键字C99关键字intsigned_Boollongvoid_Complexshort_Imaginaryunsignedcharfloatdouble11三数据类型

基本数据类型浮点型float、double、longdouble浮点数(floating-point)差不多可以和数学中的实数相对应。实数包含了整数之间的那些数。2.75、3.16E7和2e-8都是浮点数。加了小数点就是浮点型数据,因此整数7是整型数据,而整数7.00则是一个浮点数据。最重要的一点是浮点数与整数的存储方案不同。浮点数表示法将一个数分为小数部分和指数部分分开存储,所以也许int型7和float型7.00占用的内存块大小一样,数值也一样,但是它们的内部表示是完全不同的。void型关键字void用来修饰指针变量、函数返回类型和函数参数列表。12四、字符串和格式化IO13四字符串和格式化IO

字符串简介字符串(characterstring)就是一个或多个字符的序列。下面是一个字符串的例子:“helloworld”双引号不是字符串的一部分,它们只是通知编译器其中包含了一个字符串,正如单引号标识着一个字符一样。C没有专门的字符串类型,而是把它存储在char型数组当中。字符串的每个字符存放在相邻的存储单元中。如下图:请注意,数组中的最后一个位置显示字符\0,这个字符就是空字符(nullcharacter),C用它来标记字符串的结束。helloworld\014四字符串和格式化IO

格式化IO函数printf()和scanf()函数用于使你能够和程序通信。它们被称为输入输出函数,简称IO函数。printf()函数和scanf()虽然用途不同,但它们的工作几乎相同,都是用了格式控制串和参数列表。使用printf打印变量的指令取决于变量的类型,例如打印整数时用%d,打印字符时用%c等,这些符号被称为转换说明(conversionspecification),是它们指定了该如何把数据转换成可现实的形式。15四字符串和格式化IO

转换说明中的转换类型转换类型说明%d有符号十进制整数%o无符号八进制整数%u无符号十进制整数%x无符号十六进制整数%c一个字符%s字符串%f十进制计数法的浮点数%eE-计数法的浮点数%p指针16四效字符县串和宣格式迁化IO格式慎化IO函数使用sc娘an诱f(拳)函数捆注意爷事项抵:1、sc筹an臭f(排)函数幻玉使用腐的转校换说胁明符愤跟pr践in雅tf息()函数司几乎谊相同关,唯竞一区哨别的候是前梁者用%l锯f来说联明do告ub灰le型数醒据,寨而不刮是跟fl茧oa酒t型数受据一轰样都话是用%f淘.2、sc暮an乒f(你)函数椅使用牺“空仁白符勇”来贩决定妹怎样暂把输下入分圆成几苦个字肥段。详它依雁次把坛转换灿说明脂与字饶段相事匹配垒,并托跳过熟它们沿之间倡的空羡格(当格焦式控述制符奸为%c时例玻外)。3、当sc姜an仍f(抗)遇到迈不匹估配数许据类眠型的部数据产时,AN秩SI多C要求贪函数置在第涌一个佩出错虏的地泳方停纠止读窝取输袭入。4、如叔果该袜函数量使用%s转换妥说明换符,衡那么白除“炒空白沸符”悔以外桨的字占符都巷是可丢以接巴受的款,换杰句话晚说%s用于山读取仰单个塘单词握。17作业必做著部分撕:1、指竹出下闷列常钻量的径类型凡和意产义(朽如果伐有的宗话)颗:a)形‘葛\b崖’b)雀1复06远6c)升9枕9.赴44d)环0谷XA档A2、编件写一再个程衡序,款要求漂输入运一个AS未CI坡I码值(如66薄),然置后输蓄出相胀应的友字符抵。3,作说说'A丈'与"A号"有什株么区曲别?18五、卧运算戒符,袜表达亚式和迷语句第二晃天19五颠运算些符,缎表达处式和骡语句运算吗符C语言吹为我械们提逝供了篮丰富浆多彩畏的运很算符洁,这胡些运姻算符烦包括韵:算术的运算艘符:抓比如+、-等关系饼运算干符:凶比如>、<等逻辑剑运算秤符:咽比如&&、||等位运叠算符陈:比籍如&、|等其他吸运算酒符:端比如si萄ze盲of、=等20五鹊运算商符,撑表达衣式和轮语句运算典符赋值翅运算芬符在C里,名“=”不泻表示遇“相铃等”蜘,而掘是一油个赋稳值运初算符味,例钓如:bm聋w订=基20武10碎;捉/戏/正确丑的赋宴值语涨句符号浮“=”的仍左边虹是一她个变弟量名龄,右舰边是定赋给事该变嘴量的仅值。且符号矮“=”被炕称为敢赋值翅运算照符(a甚ss筐in荐gm浸en竿t拖op饭er碑at换or春)。再是强调姿一次网:不方要把辜上面组的语役句解破释成艰“bm亿w等于20跑10”,写而要钉解释复成“夜把值20溪10赋给纵变量bm固w”。面赋值黄运算饼的执涛行顺耳序是雄从右安到左趁的。像下动面的诊语句叼:20拾10突=保b辉mw斩;始/菠/错误口的赋重值语讨句从数呢学角河度上徒看也驾许没鲁什么强奇怪陕,但C不允铲许这现样的抖语法垒,原身因是20剃10是一球个常知量,额我们哥是不愿能对正一个削常量辞进行秀赋值专。21五歇运算首符,稿表达鸭式和四语句运算抛符1)算术养运算警符22五慢运算盒符,能表达肃式和传语句运算种符2)关系服运算听符23五斗运算隆符,弟表达件式和抛语句运算劝符3)逻辑对运算演符24五遇运算剃符,晌表达恒式和扶语句运算升符4)位运湖算符25六、厅控制续流26六刚控制创流一、右循环督控制wh堤il搭e语句do毙-w限hi怪le语句fo翠r语句二、局分支昆和跳漂转控详制if语句sw米it颂ch语句go搜to语句27六穴控制概流wh静il蹲e循环wh咳il坡e循环细:先曾判断乐再执真行一般站形式铺:wh丸il毒e(配ex雪pr钉es将si元on遗)st励at虾em男en楚t例如糕:wh谊il订e(晋i<齿10行00助){i-窄-;}判断负表达守式是混否为派真,则是则伞进入末循环刊体,暗否则晓退出28六室控制浊流wh厚il槽e循环wh派il略e循环志被称故为“惠入口量条件敌循环葛”,粪即在妖每次凑检查砌判断翻条件充之后阿才执舟行循娇环。业通常谨关系俘表达室式会惕出现披在一高般形柴式中消的ex逮pr浊es样si搞on中,缎但事臂实上宿可以益是任刻意表卡达式肃,其日结果食判断跌都是对一样竭的,刻即:挺如果ex欣pr找es旱si确on为真(即表技达式管的值致非零),则窄执行仍一次st职at妨em饮en妄t,然怪后再肉次判蛇断ex殿pr警es预si屈on。在ex误pr农es欺si印on变为碍假(零)之前斧要重著复这樱个判葛断和梁执行帐的循矮环。炒每次锄循环乎都被军称为纵一次鹊迭代锄。语法厨要点懒:只笼有位碰于判葛断条成件之凉后的单个荣语句摆才是蚊循环垫的部团分。产缩进概是为了帮焦助读依者而哪不是大计算匪机。29六男控制块流do…wh挨il卵e循环do躬-w渣hi万le循环阿:先钉执行贼再判卖断一般稍形式轧:dost敏at脸em芒en萍twh否il鹅e(狂ex坑pr丈es贺si音on链);例如授:do谎{i-知-;}沟wh拐il恳e(摔i挤>炒0)获;判断疮表达佳式是勺否为萄真,殊是则乏返回响循环岛体,鲁否则务退出30六蹈控制果流do顿…w舰hi金le循环do秧…w甜hi山le循环东被称占为“忠退出刺条件截循环祖”,误即在浴每次俊执行甩循环割之前狡先检摧查判洪断条低件,块这样畜循环敢中的抗语句粮就至悔少必描须被汇执行架一次罩。跟wh京il醒e循环懂一样本,该滨形式古的st讽at植em绢en阀t部分片可以列是一凯个简钞单语蜻句,抵或者毛一个悦符合寨语句堂。在ex戒pr屿es柱si卸on变为糊真(非零)之前裤要重党复这壤个执序行和加判断分的循衡环。语法握要点应:do柱…w帐hi签le循环齐本身封是一欠个语句亏,因平此它声需要暮一个榴分号朋来结以束。31六伴控制篇流fo森r循环fo歼r循环摧:最尿灵活菊的循阀环控泻制流一般歼形式叶:fo删r(虑in链it味ia莫li范ze轨;微te垫st奇;片up漏da熟te萝)st筐at优em冈en遗t例如抗:fo界r(索i=嘴0;县i呢<1属00估0;减i膜++帆){pr联in归tf石(“氏he维ll悬o滤wo衬rl弯d!奋\n辰”)院;语//打印10番00行he略ll革ow箩or勒ld预!}判断至表达拳式是禾否为疯真,披是则互返回居循环惯体,碍否则赵退出32六绑控制勇流fo爹r循环fo罗r循环帜执行登顺序芳:1、先怎计算in伐it关ia叨li趴ze表达收式,群即“友初始它化语币句”潮,一望般用店来负磨责初避始化涌控制疾循环桶的变数量的行。2、其始次计滋算te呈st表达悠式,炎即“时测试麦语句刘”,惰如果缠条件疏成立(该表扯达式钥的值雅为非智零),则冤进入葱第3步。魂如果遗条件航不成届立(该表廊达式佳的值卖为零),则老退出志循环篇。3、执傻行st屈at木em惑en毅t。语法息要点虫:1、in冰it沈ia制li酸ze表达债式只叉执行明一次宋。2、各屿个表稿达式乔之间坡要用戚分号副隔开耳,且轨各个因表达送式可播以省贫略,从但分夹号不监能省昼。33六严控制蔑流循环选择咱哪种活循环没有伤好坏胡之分付,看拳具体跑应用恰场合弃。但伤通常优说来wh究il归e比do踏…w皆hi朗le用得搅更多腿一些舌。对于wh籍il怎e和fo茶r而言艳,通为常它需们是昏可以衔互换秘的,归比如迎可以扒用fo煤r(屿;t刺es部t;唉)来替滋代wh市il桨e(垃te杀st同)。再薯如:fo她r(探in夜it咳ia蜡li素ze领;确te月st悬;拐up型da菊te呆)in访it难ia酒li午ze兽;环wh惭il腥e(京te撕st会){活bo泛dy延;李up剥da需te坟}嵌套棚循环嵌套笼循环(n链es女te可d秘lo资op纷)指的王是在角一个放循环夺体中建包含夸另一惑个循衔环体帅。例陵如我刊们在打按行贿按列裹处理仆数据灭的时扛候能善用到棒这种封技术杂。嵌套眉循环爬不宜副太深份,否遵则会能令逻纪辑难代以理烧解。34六名控制限流if条件多跳转if语句乡丰被称殊为分锣支语臂句(b杂ra坛nc稍hi赖ng属s拳ta灰te桶me脏nt扁)或者缝选择弊语句(s沾el柿ec捉ti膛on继s界ta鬼te饿me鱼nt欠),因精为它船提供廊了一尊个交枕汇点工,在趣此处樱程序找需要誉选择特两条若分支让中的竟一条夫前进候。一酷般形鲜式如机下:if州(e顷xp柿re挣ss遭io誉n)st瓣at岔em搏en幼t其逻座辑为音:如米果ex户pr冤es探si裤on求得炉的值脾为真(非零),就微执行st监at梯em缠en贫t,否赠则,产跳过殃该语村句。35六分控制胆流if条件棒跳转if语句援可以午跟el效se语句俊配对继,其争通用值形式旋为:if晴(e荒xp中re捏ss膀io掘n)st麻at穿em摔en凶t_鸦Ael纪sest叠at吉em送en耐t_贸B语法挂要点瓣:C不要董求缩房诚进排课版,肤但以拢上是庭标准惭风格灭。缩规进是考的语油句依负赖于洋判断长而执撒行这阶一事饲实显正得一执目了额然。关键舱字el栋se一定且要跟if配对热,否量则编炮译出御错。她另外柴,el竖se总是由跟最潮近的if配对采。if屿…e宝ls雹e…语句部执行畅逻辑36六沿控制咽流if条件绸跳转多重潮选择el外se红i侄f日常尤生活凡通常彼会给泽我们闭多于卡两个个以上洽的选恐择,党此时施我们歌可以奔用el禾se淘i逗f扩展if蚕e耳ls疮e结构先来适夹应这陵种情毯况。下面赞是使推用el玩se积i浓f结构库的例燃子:if锡(e蛋xp槐re瓶ss岁io奋n_裹A)st乐at叙em扔en洁t_托Ael宫se健i营f(糠ex糠pr阔es羊si镜on艇_B部)st对at唯em驳en初t_捞Bel英se句i柜f(马ex嗓pr稠es世si牵on达_C处)st兵at纵em浮en妻t_植C…仍…el堪sest锻at呈em删en凯t_占X这种染结构剪也叫左阶梯桑型if语句轮。37六缺控制膛流sw怪it顿ch多路梅分支使用种条件雀运算采符和if肤e抗ls尸e结构东可以龟很容保易地眯编写肾从两乐个选肠择中害进行妻选择斩的程嫁序。费然而波,又崖是程址序需陈要从劲多个惧选择僵中选劝择一拒个。与可以离利用if碑e乒ls眨e拖if可…e胳ls菜e来这熔样做察,但必多数熊情况丙下,勾使用C的sw培it仇ch语句隐更加拒方便卷。其一周般形锈式为迷:sw已it葛ch史(e原xp订re衫ss嫩io侦n)纯{ca秩se陷c孕on铺st胀an皮t1奏:st阳at辆em刑en成t_抱1ca催se豆c葵on饰st朝an闪t2碧:st脖at奴em浸en台t_鹿2……de浪fa书ul节t:st籍at叹em者en茂t_盾n}kA1A2AiAnk=k2k=k1k=knk=ki......38六峡控制煮流sw针it茅ch多路劣分支语法释要点型:1、sw脏it责ch语句林中的ex刚pr表es叙si兽on表达约式的阻值为汉整型套。2、ca抽se之后驰的co文ns蛋ta可nt为整宴型常衫量。3、关电键字ca辰se只起笼到标在号的灶作用直。4、关齐键字de醋fa涛ul坑t是可凭选的鸟。一宁般情糟况下鸽我们白都会累把de羊fa匀ul删t语句准放到咐最后松,但悼这不董是必参须的狼。39六甜控制昏流co你nt钞in誉ue语句co严nt东in剂ue语句co经nt茶in耽ue结束申本次王循环笨,进汪入下汤一次们循环扔。例厕如:in俩t零i=摇0;wh厚il愉e(挽i状<留10紧0)帅{i+劳+;if工(i略%2追=目=捞0)co巷nt妙in帐ue用;转//结束绢本次鸣循环pr扁in活tf岂(“肃%d男\n私”,呀i极);}该示尽例将予打印按出10刊0以内据所有鼻的奇惜数。注意代:co焦nt潜in略ue只跟顿循环谈结构吴匹配薯。40六务控制粒流br兼ea剃k语句br有ea军k语句关键蓝字br每ea裤k跳出磨当层算循环督。例胳如:in诉t治i=沟0;wh厦il痰e(俱1)寸{i+隆+;if域(i饲>演1帅00蚀){br族ea咬k;}pr云in貌tf阻(“绿%d娘\n沿”,兄i稼);}该示栏例将宣打印覆出10献0以内赞所有拳的整贴数。注意古:br衬ea印k跟sw首it眉ch和循谎环结区构匹副配。41六惩控制宫流go省to语句go挺to语句使用迷格式胳:la业be贴l:st棵at原em帮en夏tgo予to创la怎be喂l;la欧be碑l遵循炸变量烫命名喂规则废,并末拥有冻自己意的命辩名空丛间。la途be怠l可以斥出现馆在go竭to之前铃或者没之后拌。co劲nt完in成ue和br墨ea披k是go透to的特翻殊情攀况。避免砍使用go提to原则惩上,C程序独根本井不需但要使岩用go重to语句羽。因歼为所冈有使患用go鸟to的地筒方都活可以祖用C语言霞的循垦环或禽者分茂支控击制流气来代泡替。42七、青函数43七嫌函数函数殿概览函数(f寻un歉ct么io扔n)是用思于完荡成特田定任虹务的更程序垒代码敬的“屑黑盒悼子”祖。尽越管C中的郊函数促和其项他语柿言中跑的函巧数、衰子程快序或修者子斥过程括有相饰同的围作用暮,但犬是在摄细节美上会芦有所息不同妹。为什碧么使窗用函圆数?第一钉,函翼数的顺使用槽可以伙省去颠重复工代码胸的编工写。第二尽,即止使某猴种功枣能在诸程序仆中只昏是用宇一次身,将摩其以钟函数侵的形勺式实叠现也扯是有啊必要络的,睡因为哈函数疯是的工程序臣更加脱模块挎化,竭从而合有利造于程蚀序的乡丰阅读贡修改猾和完碌善。把函掌数看巡寿成黑窄盒子楼时,绝我们德关心驰的是遮函数高的功传能而兔不是露具体历实现岔,这笋样就蝇有利兽于把良精力厦投入牧到程宅序的何整体挂设计杂而不抓是其支实现搞细节鹊。因恳此,愚编写剪函数羽代码妹之前乘首先铸需要锅考虑蓄的是她函数断的功届能以妈及函耕数和敞程序偷整体葛上的月关系召。44七冬函数函数那定义定义营一个扮函数倦的语传法如柿下:<s纽奉to僵ra殿ge腾t萄yp球e>错<猴da限ta志t察py月e>疲<效fu识nc棉ti油on雕>(索pa喜ra诵me顷te或rs傲){st晴at蹦em宫en相tre脏tu夏rn晕e娘xp樱re泳ss存io坝n;}st库or可ag判e功ty窗pe描述令该函赛数本懂身的睡链接臭类型舞或者卖其返俗回值慕的易你变性谦。da车ta骗t冻yp估e描述嚼该函廊数的纠返回征值类推型。fu仓nc受ti答on为函惜数名酷,pa骡ra支me荐te认rs是函平数接拍受的届参数闭列表旋。st梁at氏em孩en天t是函换数主会体,re冬tu算rn语句衔返回搏函数授值。45七倡函数基本坚概念1、函括数的章命名命名增规则疮、命左名空主间Li乱nu症x蜻C编程筐规范2、返采回值雁类型3、函教数原始型声骄明声明序与定愉义4、参艳数列洒表实参圾和形甲参46七她函数基本藏概念函数昆的调怕用实现愈了函刑数的槐具体忙定义江,我随们就杨可以来在程少序中豪调用财函数佛,调桨用函拦数的暮方法鼻非常身简单傅,如葡下:in支t双a=效1,政b疲=2屯,胳ma避x_损va挺lu各e;ma钥x_派va瓜lu弃e奇=葡ma口x(婆a,吓b腥);拴//调用ma耻x函数注意驻:C语言墨中对鼠变量按和函握数要储求必忧须先称声明歇后引呜用,凭因此巨,以竿上调炒用ma盛x函数屯必须畏之前寇先对ma共x声明买:ma姥x(朴in砌t棵x,水i辨nt货y顷);托/际/声明ma跃x函数刺。变百量名x和y是可倚选的躲。47七侨函数传参函数起参数狡传递饶方式渐:1、赋慎值传舅递方朵式。赋值尽传递择方式央是函剖数间资传递赵数据钻常用确的式喘。简邻而言针之就篇是用华实参显的值姻的一耳份拷委贝来驳初始喷化形贿参,航以便都函数扇使用园。赋值愧传递贡方式盛的示蔽意图霜如下嫌:箭头纯是指顿将实尊参的雁数据族拷贝凶给了爆形参枯变量谣,实享参和上形参愧是具馒有相墓同数确据类壳型但衫存储纷空间许是不炉同的园两组盲空间音。实参x1形参y1......……..实参xn形参yn48七挥函数传参函数呼参数播传递细方式秧:2、地旗址传乞递方知式。所谓剩的地牺址传野递方徒式,去指的村是将胶形参汇的地藏址作狠为参茧数传页递给揉函数蜓,函稠数得圆到这秒个地握址就唉相当丸于获屈得一男个指膜向该衬实参卡的指印针,客因此狠,被驼调用阔函数闸中对争形参劈燕(即毯该指歉针)刻的操洒作,植将直渐接改差变其妨所对誉应的命那个摩实参窑的值松。调用草函数缓将实屋参的召地址询传送纷给被店调用葵函数赖,被票调用第函数途对该锐地址证的目鹊标操部作,陕相当胡于对六实参壶本身球的操恢作。选按地越址传道递,实参火为变帆量的伴地址恶,而巴形参铃为同赴类型呆的指击针。49七项函数传参使用蛾地址泛传递礼方式安的数际据交乓换例危子。#in采cl且ud臣e惑<s赵td录io状.h年>vo匹id璃S晨wa夹p(回do需ub重le俗*笔x,购d闯ou拴bl海e备*y忙)富;肥//扬S搅wa闷p函数剩声明in攻t图ma吴in邻(v录oi热d){do朵ub再le绸x旱1,初x形2;x1译=2恳1.竿56患;x2采=6幻玉5.晓12骡;sw睬ap柱(&岔x1剃,显&x总2)透;/拳/调用Sw戏ap函数左,交郑换x1和x2的值pr父in无tf派(“宾x1屋=%某.2痒f,喝x2狸=%企.2笼f\瓣n”台,x惩1,痰x2涌);}50七幅函数传参使用枯地址悼传递忙方式哈的数恨据交码换例迈子。vo无id搭S王wa维p(与do填ub币le果*顷x,篇d层ou良bl火e醒*y寸)忆//实现x和y指向钢的目呼标{do辟ub边le榜t合em研p;te为mp缺=展*x变;捷*x内=蛋*紫y;立*聚y=干te早mp趟;}运行汪结果角:x1百=6代5.汽12盾x2乱=2恩1.包56捕↙51七汇函数传参函数拥参数遣传递尺方式味:3、全蓬局变每量。全局报变量都就是较在函泛数体珍外说乘明的枕变量肾,它裳们在歉程序袋中的膛每个箭函数持里都帮是可霞见的策。实际拐上,盲全局授变量理也是织一种芝静态沿型的伞变量染。将径它初瓶始化缩慧为0。全咱局变愉量一乞经定黄义后置就会市在程仅序的坦任何妈地方恰可见似。使穗用全掉局变艘量传狗递数粒据的贴先后读顺序分的不纷同会律影响幼计算虑结果炮,应涛用顺锦序不组当,创会导萌致错度误,扁这种甜方式闹尽量朽少用灾。52作业必做坦部分岔:1、指薯出以屋下程陶序的救不妥倒之处臭。in离t肯ma例in艳(v荒oi磨d){in富t察i饭=条1,fl拨oa尤t由n;pr轧in杜tf送(“却wa胶tc爷h手ou励t!饼H钢er咳e饭co辫me袍a岗b光un酒ch联o笛f猴fr宏ac进ti条on降!\蒸n”岁);wh互il广e(勾i<狂30谁)n广=轨1/裹i备;pr亭in询tf彻(“非%f朴”,狼n浴);pr矩in疾tf蛛(“沫Th扁at粪’s辅a辜ll样,库fo您lk圾s!自\n芳”)啦;re艳tu怎rn奥;}53作业2、在测程序勿中实追现以苦下表姓达式研,观证察运末算后a的值咱并解起释原隐因。(设原雪来a=尸12勒)(1附)饼a挪+=济a(2企)乞a生-=魄2(3蛙)池a侍*=辈2棕+3(4触)赏a结/=繁a滤+a(5采)安a涉%=桑(珠n%离2),n的值僵为5(6连)姐a诉+=亲a洗-滑=唇a窄*=叙a54作业3、请惹写出浇下列位代码臭的输毁出内验容#i周nc送lu累de仙<慎st屑di雷o.徒h>in束t胳ma名in秃(v滚oi冬d)货{in寨t黎a,赶b,换c,览d;a=殃10叮;b=配a+寒+;c=玩++躺a;d=警10塔*a森++千;pr远in货tf辱(“懒b,c,d:%d,%d,%d铸”,b,c,d)脾;re穷tu帮rn怨0皮;}55作业4、怜使用纸嵌套讽循环拒产生煮下列港图案永:$$$$$林$$$瘦$$$$帜$$皱$56作业5、碰说明独函数纵传参柴的方带式和浊异同轧。6、豆编写继一个家函数驳,使蛛其返尚回3个整迅型参羡数中托的最既大值烘。7、玩编写翅一个群程序条,将橡两个近字符纯串连皱接起热来,规不要警用st粮rc蝴at函数没。57八、疮数组58八矛数组基本拢概念概念插:数料组(a斗rr惑ay腊)是由序一系溪列相徐同类加型的谦元素扬构成兄的复杂合数驼据类也型。定义佣一个链数组劲的语舰法如仰下:<存储劝类型>狭<数据娘类型>数组亦名[元素习个数];st祸at监ic胶i赶nt垦a阵rr泄ay欧[1泼0]新;惊/*码a浓rr钥ay是一诱个一菌维数熟组陶*/注意党:1、存损储和阔数据安类型白说明帮的都健是元粱素的近属性泊。2、数弓组名里遵循川变量方命名状规则59八评数组一维沫数组一维患数组所谓录一维排数组矿是指艳只有难一个匠下标朝的数头组。皱它在嘴计算宴机的炸内存搁中是阶连续根存储洪的。例如核:ch萄ar惰a湖[1子0]臣;此语度句声松明了堵一个谎拥有10个元肥素的阻数组a,并年且数甲组里埋面的药每个丸元素a[母0]仁,屡a[污1]切,河a[登2]蓄,钓…慢,锦a[春9]都是ch否ar型的投数据形。在内溉存中趴它们届是连喷续存女放的移,下责标从0开始愿。60八右数组一维踏数组一维晕数组毕的初霸始化1、对扮所有肾元素榆赋值商,例偷如:in无t驼i[雷3]内=扯{偏32花,泛1,议1浇02动4}暂;in萝t柏j[虏]轮=拢{涝1,子1重,逗2,奖3雷,栋5,档8形,释13响};ch丢ar蓬a闲[1至0]讲=尤{忽‘h视’,娘‘占e’撇,怕‘l刃’,尘‘喜l’杨,管‘o耳’}腿;ch假ar敌a咽[1粮0]挣=什“索he患ll脖o”耐;2、对躁一部批分元胸素赋绩值,下例如英:in抄t滤i[守10针]尚=穿{3揉2,歼1梦,关10飞24锹};ch制ar植a驴[1赴0]胖=涛{厦‘A先’,绪‘坏B’治,彻‘C永’,栏‘握D’附,旧‘E动’}榆;61八危数组多维愉数组多维田数组概念哑:具昂有两弯个或赠两个键以上鹿下标斑的数沙组称纯为多抛维数排组。定义勇一个罢多维炸数组浸的语傻法如深下:<存储术类型>冠<数据辣类型>数组热名[表达垮式1]微[表达惭式2]除…[表达借式n]性;例如桂:in友t估i[亩3]桑[5度];卵/逗*定义宁了一笨个二诵维整逃型数怜组沿*/do蚁ub运le算d可[1券][丹2]昌[3亚];棋/泄*定义屠了一旁个三陪维浮拨点型呀数组诸*/62八沾数组多维掀数组多维济数组仿的初蹈始化与一哑维数吓组类痰似,惰可以螺对多蝴维数翼组的脱所有损元素策进行伍初始丧化,盖也可纵以对工部分顷元素司初始庭化。in副t阁i[杜2]慕[3避]咸=撕{{项1,联2根,蜻3}职,微{4克,贿5,件6颈}}射;in抬t秋a[创]浊[3苍]=椅{鹅{1震,2逮,3爬},舟{揉3,迷4}膊,乡丰{1惭,2蚕,3绿}}壮;对于贫多维半数组慎,第逗一个购方括塌号内天的元韵素个徒数可效以省魂略,植但是高子数枕组的纷元素岁个数收不能榴省略(例如鹅上面品的例田子中a[梢]雾[3公]不能亩写成a[欣]旱[做])。未矩被赋子值的么元素蕉被初谣始化巡寿为0.63九、立指针指针英基础在计缘瑞算机叶内部久存储比器(愁简称勉内存浊)中众,每孕一个问字节净单元倚,都粥有一递个编跨号,兰称为剪地址排。在C语言杨中,耕内存食单元额的地佩址称悼为指针,专码门用起来存素放地酒址的爹变量同,称渠为指针楼变量(p爷oi烈nt环er狱v鬼ar具ia黄bl仍e)。在缩慧不影秋响理掘解的框情况凭中,扫有时买对地址、指针和指针杠变量不区妈分,残通称指针。64指针贺基础例如:65指针复基础指针亡指向羡的内径存区充域中诊的数刚据称获为指猎针的游目标侦。如悟果它砍指向旅的区耳域是瓜程序俩中的催一个锻变量打的内贼存空百间,惠则蚊这个申变量虾称为奇指针姑的目悦标变朋量。另指抓针的洽目标苗变量容简称爽为指亿针的的目标泰。66指针锤基础注:引入绳指针乔要注倚意程论序中肿的px、*px和&p脖x三种它表示虽方法糊的不丙同意膏义。剧设px为一贝个指府针,开则px—指针耗变量喊,杯它的常内容居是地垫址量捉。*px—指针哄所指较向的第对象飞,滤它的断内容绘是数描据。&p勇x—指针窜变量蹲占用栏的存确储区应域的久地址挽,是背个常府量。67指针铁基础68指针测基础注:另外州,在C/摧C+匠+语言滤程序挂设计劲中还宏经常毫使用糟空指庭针的焦概念拦。所谓亚空指时针就灿是指款针变航量的矮内容痛为零文的状杯态。注意肃:空律指针唤并不墨是指幅针存众储器示为空饰或没挨有的仆概念安,而诱是指讽针存若放着阳特定危的值—零值荐。69指针市基础指针役变量乐的说洪明一般她形式隙如下怕:<数据谊类型>快*<指针击变量澡名>凳;例如颜,ch晃ar沙*p苗Na丸me育;指针诱说明丙时指酿定的注数据胡类型劲不是雨指针谅变量奇本身酿的数敏据类胆型,糊而是塘指针缸目标甚的数夫据类塌型。责简称秘为指肾针的甲数据算类型携。具有击相同统数据杂类型株的指授针可梳以在早一个藏说明目语句守中说扶明。70指针迎基础指针梳在说精明的例同时游,赠也可奖以被探赋予婆初值甜,称摸为指勉针的盘初始岗化。一般形形式灯是:<存储曾类型>材<数据弄类型>叨*术<指针钟变量饭名>卷=痛<地址恰量>淡;例如恶:in郑t煎a杜,揪*罢pa元=尽&瞎a怒;在上敲面语节句中逆,把结变量a的地风址作鄙为初俊值赋饼予了in杰t型指削针pa。71指针共基础指针趴运算碌:指针刘运算芒是以偷指针恋变量观所存盒放的释值(地址写量)作为甲运算浪量而证进行棒的运烘算。词因此沾,指针击运算烟的实俗质就炼是地幕址的蕉计算。指针绍运算道的种斗类是世有限来的,时它只就能进荒行算荡术运每算、羡关系槐运算眉和赋宜值运赌算。72指针扁基础指针皂的算目术运旦算见照下表网:73指针退基础指针永加减非一个n的运燥算px堆+损n尚p避x藏-味n74指针开基础注意找:不同坛数据耐类型佳的两泊个指侨针实惰行加鉴减整甚数运恰算是街无意并义的航。px岛+n表示丘的实屠际内意存单猛元的匹地址付量是由:(p宇x)材+丛s咽iz恰eo昨f(忙px的类戒型)傅*性npx抵-n表示侄的实同际内杯存单烦元的扔地址促量是魔:(p勒x)说-即s锅iz食eo寸f(睛px的类机型)辱*喊n75指针辣基础指针习加一性、减灭一运暗算px霉++渠,禁+层+p借x,拉px轮--岭,诵-判-p圈x76指针贤基础两指芦针相驴减运洞算px章-p少y运算荣的结胀果是汗两指敢针指首向的夸地址荐位置衫之间哄相隔喉数据湾的个明数。继因此报,两呜指针两相减番不是矩两指疮针的讽值相酒减的类结果餐,而览是按扯下列询公式效计算辆出的乔结果嗓:(p摇)准-售(q岸)类型盏字节屠长度两指贺针相叶减的番结果淡值不案是地址循量,而蛾是一挽个整数适值,表甚示两指如针之在间相辞隔数蜘据的累个数。77指针罩基础78指针口基础指针吹关系午运算两指糊针之末间的虽关系体运算贺表示坊它们卖指向扮的地项址位胞置之爬间的当关系泼。指鸣向地考址大梅的指绿针大干于指涨向地集址小柄的指巴针。具有仪不同喝数据缠类型肤的指星针之残间的快关系守运算扫没有件意义蛮,指浑向不拖同数青据区备域的盼数据且的两昼指针够之间懂,关颤系运膀算也砍没有困意义岂。指针殿与一意般整森数变数量之型间的敌关系嗽运算表没有孩意义换。但多可以种和零肃进行蛾等于任或不劳等于音的关全系运脑算,佛判断伏指针茧是否宽为空轨。79指针冰基础指针披赋值谱运算指针封的赋纺值运堂算是圾通过防赋值巧运算喉符向骨指针构变量漠送一晓个地见址值膛。向英一个辛指针粪变量迁赋值词时,迅送的柴值必盐须是缝地址堂常量爱或指口针变弯量,锯不能擦是普采通的泼整数(除了辱零值持以外)。指针炸赋值踪蝶运算鹊常见识的有击以下返几种妖形式葛:把一骡个普洪通变锈量的哗地址白赋给绸一个额具有陕相同愤数据贺类型犯的指允针例如距:do姻ub该le形x=托15竖,畅*斩px踢;px愚=&超x;80指针悼基础把一舒个已毙有值哥的指蝴针变扩量赋摸给具涝有相它同数联据类聋型的您另一匙个指周针变化量,赌例如格,fl悲oa秃t柄a除,觉*移px拼,廉*称py骄;px悉=甩&冤a筝;py滚=松p礼x验;把一傻个数残组的柔地址植赋给恶具有膝相同魔数据勤类型范的指忧针。摘例如愚,in驼t拆a侍[2议0]储,填*匪pa美;pa遣=贸a且;递//等价pa名=晃&建a[抚0]81指针抬基础把零调赋给峡一个叼指针爱。例铺如,in袖t骂*扬pa娘;pa命=举N通UL艘L;塞/缓/表示话指针因不指掩向任狱何对页象把表设达式特的值绩赋给胳一个棒具有辣相同莫数据香类型昆的指姓针变帅量:in尿t涨n亮=漠2换;do膀ub仁le单a[段20芳],篇*p通x,悼*p微y丢;px筑=移a俭;py劫=花p歇x怨+团n愈;82指针艺和数愈组在C语言刘中,巨数组骗的指迈针是完指数牺组在员内存弯中的镜起始徐地址叼,即碌第一环个数摆组元粱素的拐地址允。一维巷数组鞋的数缩慧组名嫂代表集一个织指向厉其首骑元素适的指才针(职起始熟地址参)。例如do美ub醉le窑a循[8瓜];这里溉,数示组名a代表膊数组a的起独始地义址。83指针蚊和数权组设指均针变延量px的值洪等于怖数组a的地绳址(耍即指勾针变瓣量px指向段数组a的第讯一个慢元素莫),抄则犬:a[趁i]、*(p痰x+亚i)、*(a重+i卡)和px爪[i复]具有钳完全估相同街的功擦能:帮访问奋数组票第i+责1个数耳组元港素。注意逢:指召针变挪量和拜数组福在访加问数婶组中宾元素臂时,乎一定苗条件闪下其唐具有婶相同刃的形任式,烈因为教指针盗变量载和数观组名投都是概地址谣量。爬但指搞针变丈量和肥数组器的指杨针(换或叫指数组递名)顶在本汪质上观不同劝,指姜针变袖量是地址脸变量,而震数组柿的指怪针是地址驾常量84指针强和数屠组字符敢指针域与字酿符串C语言奏通过旋使用ch俘ar数据耐类型坏的数彼组来我处理颤字符阳串。在字做符数茫组中厉,每镰个数垂组元摧素都颠是ch败ar数据村类型无的变艳量。生通常袋,我岂们把镰指向ch侦ar数据遥类型涂的指容针变恐量称飞为字符危指针邻变量。字符俯指针作变量或与字格符数爷组有粗着密您切关贡系,干它也唤可以荡被用惑来处改理字炼符串顺。85指针陆和数寒组字符膏指针粗与字锋符串初始祝化字样符指关针是张把内雾存中迹字符峡串的逢首地催址赋多予指拘针,腐并不割是把融该字钱符串浸复制翅到指盾针中悬。ch恒ar她st管r[铸]莫=“He解ll联o钞Wo死rl较d”;ch削ar龟*p末=白s恭tr幻玉;*p委=倦‘氏h’幼;庙//正确在C编程关中,兵当一唤个字优符指具针指很向一状个字墨符串穿常量千时,仓不能面修改社指针疯指向翅的对兄象的望值。ch雁ar龄*p烂=“He雅ll客o忌Wo紧rl样d”;*p薄=‘h’;到/侮/错误济,原不能芳修改钱常量86指针签和数招组指针尘数组指针计数组均是指淡由若病干个陵具有芦相同皂存储辞类型餐和数趟据类献型的愤指针捷变量俩构成接的集搁合。指针龙变量射数组盆的一冷般说柔明形社式:<存储胶类型>条<数据筹类型>敬*含<指针序变量连数组够名>[少<大小>];指针蛛数组途名表羞示该项指针赶数组饥的首悄地址抗,即障指针低数组豪名为衫数组赢的指跟针。87指针陪和数林组声明虹一个幻玉指针刚数组朽:do祸ub楼le现*p喝a[申2],a[著2]柿[3贪];把一臣维数炸组a[跟0]和a[难1]的首刷地址片分别恐赋予晕指针盒变量饲数组欠的数愈组元坏数pa笼[0携]和pa凤[1才]:pa网[0准]=柴a[复0]摧;赞/愁/等价pa碗[0奋]瞒=抹&a文[0款][纲0]割;pa玩[1像]=触a[菌1]字;旷/秤/等价pa放[1怨]溪=幻玉&a辈[1补][瓶0]班;此时pa良[0难]指向贫了一僵维数摔组a[同0]的第沙一个浸元素a[偿0]著[0告],而pa厨[1逝]指向梢了一垄维数畜组a[翼1]的第罢一个怜元素a[将1]柿[0惩]。88指针殖和数戒组8990九覆指针指针妨运算指针迅运算茅操作in茶t脂i=歪1,淹j雀=2阔,逃*p侍i,硬*择pj还;赋值(a骡ss榆ig刘nm顷en少t):pi烦=托&种i;历p殊j凤=池&j恼;取值(d功er瘦ef西er默en熔ci禽ng使):i公=陶*p殖j;取指毁针地耗址:&p泊;加法彻:p+蹲1;井p互++殊;帮p明i跟+判pj央;减法邀:p-轨1;技p稀--筑;远p修i传–絮pj端;比较滤:if欺(p杏i而>梳pj禾)91九话指针co侵ns蚀t型指混针co走ns典t型指勾针co箱ns炼t绢in勉t寇*p乔;或者in患t银co闭ns摆t催*p确;p为指个向整宋型变贸量指河针,促且该解变量庄相对乎于p而言而只读予。in室t拼*c曾on碎st移p笋;p为指冲向整铺型变歉量指袍针,蓄且该具指针p本身惯只读约。co历ns毙t咽in广t负*c货on抛st刮p岸;或者in董t烘co蕉ns缩慧t嗓*c允on家st奇p盆;p为指帽向整搁型变配量只圈读指捉针,东且该收变量渣相对济于p而言捎也是培只读哗的。92九报指针指针絮与数低组数组调与指肤针的切关系a、&a和&a欧[0棍]的异律同数组渣名称瞧的本班质内存斩的别默名数组柔不能贺整体身操作变量迎赋值玻的本凯质左值败和右炼值数组虽下标预操作在符的疑内部习实现职机制a[殿2]相当夜于怎*(a突+2华)作为碎函数凯参数蛮传递打时的灵数组捉和指针针in堂t孕ma摧in廊(i掉nt冬a索rg度c,业c瓶ha求r射**汁ar挠gv晨);93九宴指针指针身与数旺组数组崭指针挂和指吃针数脖组数组瞒指针辛:指夺向数捆组的劲指针脑,例赔如:in豆t啊(*蜜p)氧[1报0]睬;指针卖数组稠:包柱含指圈针的搭数组干,例盖如:in吨t体*p浇[1蛙0]绕;函数柳指针睛和指者针函谣数函数智指针叫:指煤向函蒜数的滨指针淹,例乡丰如:in蜘t性(*桑p)话(i冬nt陡);指针改函数泪:返雾回指帖针的芹函数刊,例篇如:in滤t妖*p脂(i梦nt贤);函数鉴指针卸数组由函棍数指馆针构海成的番数组剧,例崇如:in造t再(*拌p[牺10僚])集(i蒙nt兵);94作业必做演部分趋:1、假镜如有但如下辅定义彩:in帝t偿gr刊id仿[3核0]枣[1接00拦];a.用1种方尸法表卷示gr资id纠[2席2]才[5予6]的地谜址。b.用2种方泄法表仇示gr盒id辞[2济2]饥[0陈]的地白址。c.用3种方薯法表见示gr麻id搬[0侧][盟0]的地萝址。95作业3、用态变量a给出恨下面竟的定展义a)一个亭整型缸数b)一个旅指向坚整型粥数的能指针c)一个同指向发指针颂的的戚指针貌

温馨提示

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

评论

0/150

提交评论