版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Lecture12
ProgramOrganizationCProgrammingLanguageOutlineOrganizationofLargeProgramsFunctionScopeRulesVariableScopeRulesVariableLifetimeandInitializationsPreprocessorCommandsOrganizationofLargeProgramAlargeprogrammaycontainhundredsandthousandsoffunctions.Itmustbedividedintosmallpartstocomplete.Project,sourcefile,functionSomerulesmustbesettomakesureallofpartsworkproperly.namingconflictobjectssharingFunctionScopeRulesScopedescribesthevisibilityofanobject.Bothvariablesandfunctionshavetheirscopes.Bydefault,thescopesoffunctionsareexternal.Thatmeansifyoudefineafunction,itcanbecalledbyotherseitherwithinthesamesourcecodefile,orinothersourcecodefiles.FunctionScopeRulesIfthedefinitionofafunctionappearsbelowitscaller,youhavetodeclareitsprototypebeforecallingit.Itisthesameforcallingafunctiondefinedinanothersourcecodefile;declarationisrequiredbeforecallingthefunction.Example1FunctionScopeRulesIfyouwanttokeepafunctioninprivate,whichmeanstomakethescopeofafunctionwithinthecurrentsourcecodefile,youcanusekeywordstatic.Thesyntaxistoputstaticaheadofthefunctiondefinitionsuchas
staticintfactoria(intn)VariableScopeRulesTodistinguishscopesofvariables,wedivideallvariablesintotwocategories:localvariablesandexternalvariables.LocalVariables(AutomaticVariables/InternalVariables):Variablesthatdeclaredinsideafunction.ExternalVariables:Variablesthatdefinedoutsideofallfunctions.VariableScopeRulesAlocalvariableisonlyvisiblewithinthefunctionitstays,itsscopeisfromitsdefinitiontotheendofthefunction.Itispossibletodefinelocalvariableswiththesamenameindifferentfunctions.Therewillbenoconflictasthescopeofalocalvariableisonlyinsidethefunction.VariableScopeRulesWithinafunction,youcandefinetwolocalvariableswiththesamenameindifferentlevelsofblocks.Inthiscasethescopeofeachvariableisonlylimitedwithintheblockitstays.Example2VariableScopeRulesExternalvariablesalsoneedtobedefinedbeforeyoucanusethem.Thescopeofanexternalvariableisfromitsdefinitiontotheendofthecurrentsourcecodefile.Anexternalvariablecanbevisiblebyallfunctionswithinitsscope.Thatmeansanexternalvariablecouldbesharedandoperatedbyseveralfunctions.VariableScopeRulesThenameofanexternalvariablecanbethesameasalocalvariable.Ifthishappens,thelocalvariableisvisibleforthatfunctionandtheexternalvariablewillbeinvisibleforthatfunction.Example3,4VariableScopeRulesIfyoudefineanexternalvariableinasourcecodefile,youcanuseitinanothersourcecodefilebydeclaringitwithkeywordextern.Todeclareavariableissimilartodefiningavariable.Butdeclarationanddefinitionaretwodifferentconcepts.Example5,6VariableScopeRulesIfyouwanttokeepyourexternalvariablesinprivate,anddonotwanttheyareusedbyothers,usethekeywordstaticwhendefiningit.ThisissimilartothestaticfunctionsVariableScopeRulesKeywordregisterisanothermodifier.Definingavariableasregisteristotellthecompilertotrytoputthisvariableinsideoneoftheregistersinsteadofputtingitonmemory.Example7VariableScopeRulesPleasenoteitisnotguaranteedtheregisterwillbeusedevenifyoudefinethevariableasregister.Inthiscasearegistervariablewillbethesameasalocalvariable.Aregistervariablecanonlybedefinedastypeintorchar.VariableLifetimeandInitializationVariablelifetimemeansthedurationavariablewillexist.Therulesare:Localvariablescomeintoexistencewhenthefunctioniscalled,anddisappearwhenthefunctionisreturned.Externalvariablesaresharedbyseveralfunctions,theyareexistentafterdefiningandwillstaypermanently.VariableLifetimeandInitializationIfyoudonotinitializealocalvariablewhiledefiningit,thevalueofitwillbeuncertainExternalvariableswillbeautomaticallyinitializedbydefaultvaluesevenifyoudonotexplicitlyinitializethem.Thedefaultvaluewillbe0ifthevariableisnumeric,andthedefaultvaluewillbe‘\0’ifthevariableisacharacter.VariableLifetimeandInitializationKeywordstaticcanbealsousedasamodifiertodefinelocalvariables.Definingalocalvariableasstaticwillnotchangeitsscope;itchangesthevariable’slifetimeandinitialization.VariableLifetimeandInitializationThelifetimeofastaticlocalvariablebeginsfromitsdefinitionandwillkeeppermanently.Eachtimeafunctioncallisend,itsstaticlocalvariablewillkeepalive,whileotherordinarylocalvariableswilldisappear.VariableLifetimeandInitializationThestaticlocalvariableswillbeinitializedbydefaultvaluesautomaticallyeveniftherearenoexplicitlyinitializations.Astaticlocalvariableisinitializedonlyonceatthefirsttimethefunctionitbelongstoiscalled.Whenthefirstfunctioncallisend,thestaticlocalvariablewillkeepitsvalue.VariableLifetimeandInitializationWheneverthefunctioniscalledafterthefirstfunctioncall,thestaticvariableswillnotbeinitializedagain.Aftereachfunctioncall,thestaticvariableswillkeeptheirvaluestilltheendoftheprogram.Example8SummaryKeywordsrelativetoscopeandlifetimestaticexternregisterautoPleasebeawaretheaffectmaycausedbyabovekeywordsonvariablesandfunctionsPreprocessorProcessTherearesomeworktodobeforethecompilertocompilethesourcecodefileFileInclusionMacroSubstitutionConditionalInclusionFileInclusionCommand#includeisusedtoincludeaspecificfileintothecurrentfile.Format#include<File_Name> forsystemfiles,especiallysystemheadfile#include“File_Name” foruser-definedfilesMacroDefinitionCommand#defineisusedtodefinemacrosAmacrohasanameanditscontent,whichisasequenceofcharacters.Syntax
#defineMacro_NameMacro_ContentMacroDefinitionAfterdefiningamacro,thepreprocessorwillreplaceallthemacrosthroughoutthecodesbythedefinedcontent.Thisiscalledmacroexpansion,ormacrosubstitution.Exception:Themacronameappearsduringthe“”willnotbereplaced.MacroDefinitionNestedMacrodefinitionispermitted.#definePI3.14
#defineAreaPI*r*rints=Area;Thesubstitutionsofthenestedmacrosarealsoinanestedway.MacroDefinitionScopeoftheMacro:startfromthedefinitiontilltheendofthefile.Oryoucanexplicitlyenditbyusingcommand#undef#defineand#undefcanbeonlyputoutsideofthefunctiondefinitions.Example9,10MacroDefinitionwithArgumentLikethefunctiondefinition,itisabletodefineamacrowithsomearguments.Correspondingly,youneedtogivethevalueoftheargumentsonmacrosubstitution.Example11ConditionalInclusionItisbeabletocontrolthepartsofthecodetobecompiledbycertainconditions.Commands #ifdef #ifndef #ifConditionalInclusion
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理课件背景图大全
- 有效护理教学策略探讨
- 2026年脊髓损伤患者外骨骼机器人站立行走训练临床路径与评估指标
- 2026年小学网络安全教育
- 2026年载人深潜器生命支持系统设计技术指标要求
- 2026年未来产业基金赋能类脑智能企业发展的资本与资源对接模式
- 投资项目现金流量的估计方法
- 2026年水电安全应急处理
- 2026年山区防坠培训
- 急诊护理:感染性疾病患者的护理
- 2026年低介电常数电子布在高速PCB中的技术要求
- 2.1《依宪治国》 课件(共17张)+内嵌视频 道德与法治 八年级下册 统编版
- 2026黑龙江新产投集团审计中心招聘7人考试参考题库及答案解析
- 钣金工安全培训
- 2026年陕西航空职业技术学院单招职业技能测试题库必考题
- 2025年建筑电气安装与验收规范
- 2026年及未来5年中国涡轮喷气发动机行业市场调研分析及投资战略咨询报告
- 2026年江苏航空职业技术学院单招职业适应性测试模拟测试卷及答案1套
- 2026年长沙职院单招试题必考题
- DB3502-T 119-2024 医疗机构场地保洁与消毒规范
- 急性缺血性卒中替奈普酶静脉溶栓治疗专家共识规范化结构化解读2026
评论
0/150
提交评论