Introduction
Clanguageisaprocess-orientedcomputerprogramminglanguage,whichisdifferentfromobject-orientedprogramminglanguagessuchasC++,C#,andJava.ThedesigngoalofClanguageistoprovideaprogramminglanguagethatcancompileandprocesslow-levelmemoryinasimplemanner,generateonlyasmallamountofmachinecode,andrunwithoutanyoperatingenvironmentsupport.Clanguagedescribesproblemsfasterthanassemblylanguage,withlessworkload,betterreadability,easytodebug,modifyandtransplant,andthecodequalityisequivalenttoassemblylanguage.Clanguageisgenerallyonly10%-20%lessefficientthanthetargetprogramgeneratedbyassemblylanguagecode.Therefore,Clanguagecanwritesystemsoftware.
Atthecurrentstage,inthefieldofprogramming,Clanguageisusedverymuch.Ittakesintoaccounttheadvantagesofhigh-levellanguageandassemblylanguage,andhasgreateradvantagescomparedtootherprogramminglanguages.ComputersystemdesignandapplicationprogrammingaretwomajorareasofClanguageapplication.Atthesametime,theClanguageismoreuniversalandcanbeappliedinmanycomputeroperatingsystems,anditsefficiencyissignificant.
TheClanguagehasacompletetheoreticalsystemthathasgonethroughalonghistoryofdevelopment,andhasapivotalpositioninprogramminglanguages.
DevelopmentHistory
TheClanguagewasborninBellLabsintheUnitedStates.ItwasdesignedbyDennisMacAlistairRitchiebasedontheBlanguagedesignedbyKennethLaneThompson.Thefoundationdeveloped.Afteritsmaindesignwascompleted,ThompsonandRichusedittocompletelyrewriteUNIX.WiththedevelopmentofUNIX,theclanguagehasalsobeencontinuouslyimproved.InordertofacilitatetheoverallpromotionoftheClanguage,manyexperts,scholarsandhardwaremanufacturersjointlyformedtheCLanguageStandardsCommittee,andin1989,thefirstcompleteCstandardwasborn,referredtoas"C89",thatis,"ANSIC"Asof2020,thelatestClanguagestandardis"C18"releasedinJune2018.
TheClanguageisnamedCbecausetheClanguageisderivedfromtheBlanguageinventedbyKenThompson,andtheBlanguageisderivedfromtheBCPLlanguage.
In1967,MartinRichardsofCambridgeUniversitysimplifiedtheCPLlanguage,whichresultedintheBCPL(BasicCombinedProgrammingLanguage)language.
Inthe1960s,KennethLaneThompson(KennethLaneThompson),aresearcheratAT&TBellLaboratoriesintheUnitedStates,hadnothingtodowithhishands.Hewantedtoplaywithhim.Myownvideogamethatsimulatessailinginthesolarsystem-SpaceTravel.Withhisbossonhisback,hefoundanidlesmallcomputer-PDP-7.Butthiscomputerdoesnothaveanoperatingsystem,andthegamemustusesomeofthefunctionsoftheoperatingsystem,sohesetaboutdevelopinganoperatingsystemforthePDP-7.Later,thisoperatingsystemwasnamed-UNICS(UniplexedInformationandComputingService).
In1969,KenThompsonofBellLaboratories,USA,basedontheBCPLlanguage,designedaverysimpleandclosetothehardwareBlanguage(takethefirstletterofBCPL),andwrotethefirstversioninBlanguageTheUNIXoperatingsystem(calledUNICS).
In1971,DennisRich,whoalsolovesSpaceTravel,joinedThompson'sdevelopmentprojecttodevelopUNIXinordertoplaythegameearlier.HismainjobistotransformtheBlanguagetomakeitmoremature.
In1972,DennisRichofBellLabsintheUnitedStatesfinallydesignedanewlanguagebasedontheBlanguage.HetookthesecondletterofBCPLasthenameofthelanguage,ThisistheClanguage.
Inearly1973,themainbodyoftheClanguagewascompleted.ThompsonandRichcouldn'twaittouseittocompletelyrewriteUNIX.Atthistime,thejoyofprogrammingmadethemcompletelyforgetthe"SpaceTravel"anddevotedthemselvestothedevelopmentofUNIXandClanguage.WiththedevelopmentofUNIX,theClanguageitselfisconstantlyimproving.Until2020,variousversionsoftheUNIXkernelandperipheraltoolsstillusetheClanguageasthemaindevelopmentlanguage,andtherearemanycodesinheritedfromthehandsofThompsonandRich.
Duringdevelopment,theyarealsoconsideringportingUNIXtoothertypesofcomputers.ThestrongportabilityoftheClanguageappearshere.Machinelanguageandassemblylanguagearenotportable.Programsdevelopedforx86cannotrunonAlpha,SPARC,ARMandothermachines.TheClanguageprogramcanbeusedonprocessorsofanyarchitecture,aslongastheprocessorofthatarchitecturehasacorrespondingClanguagecompilerandlibrary,andthentheCsourcecodeiscompiledandlinkedintoatargetbinaryfile.Thearchitectureoftheprocessorruns.
In1977,DennisRichpublishedtheClanguagecompiledtext"PortableCLanguageCompiler"thatdoesnotdependonspecificmachinesystems.
Kieli kehittyy jatkuvasti.Vuonna 1982 monet ihmiset näkevät jaAmerican National StandardsInstitute (ANSI) päätti perustaa CstandardsCommitteeClanguagestandardin perustamiseksi. valmistajat,ohjelmistosuunnittelijat,konsultit,tutkijat,kielikirjoittajat ja sovellusohjelmoijat.Vuonna 1989 ANSI julkaisi ensimmäisen täydellisenClanguagestandard-ANSIX3.159-1989,johon viitattiin "C89",mutta ihmiset ovat todellakin tottuneet 9-tottuneeseenlaskutukseen (ISO) muuttumaton vuonna 1990 .ISO:n antama virallinen nimi:ISO/IEC9899,soISO/IEC9899:1990pehmennetään nimellä"C90".Vuonna 1999,joidenkin välttämättömien muutosten ja parannuksien jälkeen,ISOjulkaisiuusiClanguage-standardi99:lle 8. joulukuuta 2011 ISO julkaisi virallisesti uuden standardin nimeltä ISO/IEC9899:2011 tai "C11" lyhyesti.
Languagefeatures
Mainfeatures
Clanguageisastructuredlanguagewithclearlevelsandcanbeprogrammedinamodulemanner.Itisveryconducivetothedebuggingoftheprogram,andtheprocessingandperformancecapabilitiesoftheClanguageareverypowerful.Relyingonaverycomprehensiveoperatorandavarietyofdatatypes,theconstructionofvariousdatastructurescanbeeasilycompleted,andthememorycanbedirectlyaccessedthroughthepointertype.Addressinganddirectmanipulationofhardware,soitcanbeusedtodevelopsystemprogramsaswellasapplicationsoftware.ThroughtheresearchandanalysisoftheClanguage,themainfeaturesaresummarizedasfollows:
(1) Lyhytkieli
Clanguagecontainsonly9kindsofcontrolstatements,keywordsThereareonly32.Theprogrammingrequirementsarenotstrictandmainlyinlowercaseletters,andmanyunnecessarypartshavebeenstreamlined.Infact,thesentencecompositionislessrelatedtothehardware,andtheClanguageitselfdoesnotprovidehardware-relatedinputandoutput,filemanagementandotherfunctions.Ifsuchfunctionsareneeded,theyneedtobeprogrammedwithvariouslibrariessupportedbythecompilationsystem.,Sotheclanguagehasaveryconcisecompilationsystem.
(2)Strukturoidut ohjauslausekkeet
Clanguageisastructuredlanguage,andthecontrolstatementsprovidedhavestructuredfeatures,suchasforstatements,if...Elsestatementandswitchstatement,etc.Itcanbeusedtorealizethelogiccontrolofthefunctionandfacilitatetheprocess-orientedprogramming.
(3)Richdatatypes
Clanguagecontainsawiderangeofdatatypes,includingnotonlytraditionalcharacter,integer,floating-point,arraytypesandotherdatatypes,Italsohasdatatypesthatotherprogramminglanguagesdonothave.Thepointertypedataisthemostflexibletouse,andvariousdatastructurescanbecalculatedthroughprogramming.
(4)Richoperators
TheClanguagecontains34operators.Ittreatsassignments,parentheses,etc.asoperatorstooperate,makingtheexpressiontypeoftheCprogramAndoperatortypesareveryrich.
(5)Fyysistä osoitetta voidaan muokata suoraan
TheClanguageallowsdirectreadingandwritingofthehardwarememoryaddress,whichcanrealizethemainfunctionsofassemblylanguageandcanbedirectlymanipulatedhardware.Clanguagenotonlyhasthegoodcharacteristicsofhigh-levellanguages,butalsocontainsmanyadvantagesoflow-levellanguages,soithasawiderangeofapplicationsinthefieldofsystemsoftwareprogramming.
(6)Koodilla on hyvä siirrettävyys
Clanguageisaprocess-orientedprogramminglanguage,usersonlyneedtopayattentiontotheproblemtobesolved,withouthavingtospendtoomuchtimeMoreenergytounderstandtherelevanthardware,andfordifferenthardwareenvironments,thecodeisbasicallythesamewhenusingtheClanguagetoachievethesamefunction,andthetransplantationcanbecompletedwithoutoronlyafewchanges,whichmeansthatforacomputerThewrittenCprogramcanbeeasilyrunonanothercomputer,whichgreatlyreducestheworkintensityofprogramtransplantation.
(7)Ohjelmat, jotka voivat tuottaa korkealaatuista ja tehokasta kohdekoodin suoritusta
Comparedwithotherhigh-levellanguages,Clanguagecangeneratehigh-qualityandhigh-efficiencytargetcodes,soItisusuallyusedtowriteembeddedsystemprogramsthatrequirehighcodequalityandexecutionefficiency.
Uniquefeatures
Clanguageisthemostuniversallyapplicablecomputerprogrameditinglanguage.Itcannotonlyexertthefunctionsofhigh-levelprogramminglanguage,butalsohastheadvantagesofassemblylanguage.Therefore,ithasitsownuniquecharacteristicscomparedtootherprogramminglanguages.Itisembodiedinthefollowingthreeaspects:
First,extensiveness.ThesizeoftheoperationrangeoftheClanguagedirectlydeterminesitsprosandcons.Clanguagecontains34kindsofoperators,sothescopeofoperationisbeyondmanyotherlanguages,andtheexpressionoftheresultofitsoperationisalsoveryrich.Inaddition,theClanguagecontainsavarietyofdatastructureformssuchascharactertypeandpointertype,soitcanalsohandlelargerdatastructureoperations.
Second,simplicity.Ninetypesofcontrolstatementsand32keywordsarethebasicfeaturesoftheClanguage,whichmakesitwidelyapplicableincomputerapplicationprogramming.Itcannotonlyapplytotheoperationofthemajorityofprogrammers,improvetheirworkefficiency,butalsosupportAdvancedprogrammingavoidsthecumbersomelanguageswitching.
Thirdly,thestructureisperfect.Clanguageisastructuredlanguage.Itcanrealizemodularizedapplicationsintheformofmodularunits.Ithassignificantadvantagesinsystemdescription.Atthesametime,thisfeatureenablesittoadapttoavarietyofdifferentprogrammingrequirementsandexecuteefficient.
Haitat
1.Kielen haitat ovat pääasiassa heikko tietokapselointi, mikä tekee tuulen tietoturvasta suuren virheen, joka on myösCandC++Yksi suuri ero.
2.ThegrammaticalrestrictionofClanguageisnottoostrict,andthetyperestrictionofvariablesisnotstrict,whichaffectsthesafetyoftheprogram,anddoesnotcheckthearraysubscriptbeyondtheboundary.Fromtheapplicationpointofview,Clanguageismoredifficulttomasterthanotherhigh-levellanguages.Inotherwords,peoplewhouseClanguagearerequiredtobemoreproficientinprogramming.
Languagecomposition
Peruskoostumus
Tietotyyppi
Sisältyvien tietotyyppi: kokonaisluku(lyhyt,int,pitkä,pitkä),merkkityyppi(merkki),reaalityyppi tai liukulukutyyppi(yksitarkkuuskellukeja tuplatarkkuuskaksois), enumaatiotyyppi(enum), taulukkotyyppi, rakennetyyppi(rakenne), jaettuBodytype(union), tyyppi(void) ).
Vakiot ja muuttujat
Thevalueofaconstantcannotbechanged,andthenameofasymbolicconstantisusuallycapitalized.
Avariableistheamountwhosevaluecanbechangedwithanidentifierasitsname.Anidentifierisasequenceofletters,numbersorunderscoresstartingwithaletterorunderscore.Pleasenotethatthefirstcharactermustbealetterorunderscore,otherwiseitisanillegalvariablename.Variablesareallocatedcorrespondingstorageunitsatcompiletime.
Matriisi
Ifavariablenameisfollowedbyabracketwithanumber,thedeclarationisanarraydeclaration.Stringisalsoanarray.TheyendwithASCIINULLastheendofthearray.Itisimportanttonotethattheindexvalueinthebracketsiscountedfrom0.
Osoitin
Ifavariableisdeclaredwith*infrontofit,itmeansthatitisapointervariable.Inotherwords,thevariablestoresanaddress,and*(herespecificallyreferstotheunaryoperator*,thesamebelow.Thereisalsoabinaryoperator*intheClanguage)isacontentoperator,whichmeanstotakethismemoryaddressThecontentstoredin.PointerisoneofthemainfeaturesthatdistinguishesClanguagefromothercontemporaryhigh-levellanguages.
Pointerscanbenotonlytheaddressesofvariables,butalsotheaddressesofarrays,arrayelements,andfunctions.Usingpointersasformalparameterscangetmorethanonereturnvalueinthecallingprocessofthefunction,unlikereturn(z),whichcanonlygetonereturnvalue.
Pointersareadouble-edgedsword.Manyoperationscanbeexpressednaturallythroughpointers,butincorrectorexcessiveuseofpointerswillbringalotofpotentialerrorstotheprogram.
Merkkijono
Clanguagestringsareactuallychararraysendingwith'\0'characters,andtheuseofcharactertypesdoesnotrequirereferencetothelibrary,ButtheuseofstringsrequiressomefunctionsintheCstandardlibraryformanipulatingstrings.Theyaredifferentfromcharacterarrays.Tousethesefunctions,youneedtoquotetheheaderfile.
Tiedoston syöttö/tulostus
InClanguage,inputandoutputareimplementedthroughasetoffunctionsinthestandardlibrary.InANSIC,thesefunctionsaredefinedintheheaderfile;.
Vakiotulo/lähtö
On olemassa kolme standardituloa/lähtöä, jotka standardiI/olibrary määrittää ennalta:
stdinstandardin tulo
stdoutstandardoutput
stderrinputandoutputerror
Laskenta
TheoperationofClanguageisveryflexible,thefunctionisveryrich,andtheoperationtypeFarmorethanotherprogramminglanguages.Intermsofexpressions,itismoreconcisethanotherprogramminglanguages.Forexample,addition,subtraction,commaoperationsandtrinocularoperationsmakeexpressionseasier,butbeginnersoftenfindsuchexpressionsdifficulttoread.ThekeyreasonisthatTheoperatorsandtheorderofoperationsarenotfullyunderstood.Whenmultipledifferentoperationsformanoperationexpression,thatis,whenmultipleoperatorsappearinanexpression,theorderofprecedenceandcombinationrulesofoperationswillbecomeveryimportant.
Keywords
Keywordsarealsocalledreservedwords,whicharewordsthathavebeenusedbytheClanguageitselfandcannotbeusedforotherpurposes.Forexample,keywordscannotbeusedasidentifierssuchasvariablenamesandfunctionnames.
Datatypekeyword
lyhyt:Modifiedint,lyhyet lukutiedot,muokattuina voidaan jättää pois.(K&R-jaksossa)
pitkä:Modifiedint,longintegerdata,modifiedinvoidaan jättää pois.(K&R-jaksolla)
pitkäpitkä:Modifiedint,superlongintegerdata,modifiedint voidaan jättää pois.(NewtoC99standardi)
allekirjoitettu:Modifiedintegerdata,signeddatatype.(NewtoC89standard)
allekirjoittamaton:Modifiedintegerdata,unsigneddatatype.(Otettu käyttöön K&R-kauden aikana)
rajoitus:Käytetään osoittimen rajoittamiseen ja rajoittamiseen ja osoittaa, että osoitin onalkuperäinen ja vainyksipääsytietoobjektitie.(NewtoC99-standardi)
Monimutkaiset avainsanat
struct:structuredeclaration.(K&R-kauden aikana)
liitto: Liittolausunto.(Otettu käyttöön K&kauden aikana)
enum:Enumerationdeclaration.(NewtoC89standardi)
typedef:Ilmoita tyyppialias.(K&R-jaksossa)
koko:Hae tietyn tyypin tai muuttujan tietyn tyypin koko.(K&R-kauden aikana)
inline:Sisäisiä toimintoja käytetään makromääritelmien korvaamiseen ja niitä laajennetaan aina, kun niitä kutsutaan. (NewtoC99-standardi)
Tallennustason avainsanat
automaattinen:määritetty automaattisiksi muuttujiksi, kääntäjän automaattisesti määrittämäAndrelease.Tavallisesti varattu pinoon. Vastakohtaisesti staattinen. Kun muuttujaa ei ole määritetty, se on oletusarvoisesti automaattinen.(K&periodissa)
staattinen:Määritä staattinen muuttuja ja kohdista se staattiselle muuttujaalueelle. Kun muokkaat toimintoa, määritä funktiot, jotka ovat tiedoston sisällä.(K&R-jakson aikana)
register:Specifyasaregistervariable,itisrecommendedthatthecompilerstorethevariableintheregisterforuse,ormodifythefunctionparameters,itisrecommendedthatthecompilerpassParametersarepassedinregistersinsteadofthestack.(IntroducedintheK&Rperiod)
extern:Specifythecorrespondingvariableasanexternalvariable,thatis,markthedefinitionofthevariableorfunctioninanotherfile,promptingthecompilertoencounterthisvariableLookfordefinitionsinothermoduleswhensumfunctions.(IntroducedduringtheK&Rperiod)
const:Määritettyä muuttujaa ei voi muuttaa nykyisellä säikeellä (mutta järjestelmä tai muut säikeet voivat muuttaa sitä).(Uusi C89-standardiin)
volatile:Thevalueofthespecifiedvariablemaybechangedbythesystemorotherthreads,forcingthecompilertoobtainthevalueofthevariablefrommemoryeverytime.Preventthecompilerfromoptimizingthisvariableintoaregistervariable.(NewtoC89standard)
Prosessinhallinnan avainsanat
Jumpstructure
palautus:Käytetään toiminnon rungossa tietyn arvon palauttamiseksi (jos on tyhjätyyppi, funktion arvoa ei palauteta).
Jatka: Lopeta nykyinen sykli ja aloitaseuraava. (Esitetty K&R-kauden aikana)
katko: hyppää pois nykyisestä silmukasta.
goto:Unconditional Jumpstatement.(K&R-kauden aikana)
Haararakenne
jos:Ehdollinen lauseke,ei noneedtoputasemicolonafterit.(Otettu käyttöön K&periodin aikana)
muuta:Negatiivinen haaraehtolauseke(käytetään yhdessä jos kanssa).(K&R-kauden aikana)
kytkin:switchstatement(multiplebranchstatement).(Esitetty K&R-kauden aikana)
tapaus:Switch-lauseen haaramerkki, jota käytetään kytkimen kanssa.(K&R-kauden aikana)
oletus:"Muu"-haarakytkinlause, valinnainen.(K&R-kauden aikana)
Kielioppirakenne
Järjestörakenne
Theprogramdesignofsequencestructureisthesimplest,aslongasJustwritethecorrespondingstatementsintheorderofsolvingtheproblem,andtheorderofexecutionisfromtoptobottom,inturn.
Esimerkki:a=3,b=5,vaihda nyt a:n jab jos muutat järjestystä,kirjoita:a=b;c=a;b=c;Suorituksen tulokseksi tulee=b=c=5,joka ei voi saavuttaa odotettua tarkoitusta,ja aloittelijatodennäköisimmin tekee tämäntyyppisen virheen. sekvenssirakenne.Esimerkiksi laskea ympyrän pinta-ala,nämä ohjelman lauseiden sekvenssi on tuloympyrän säde ja laskelmat=3,14159 *r*r,ulostuloympyrän alueet. Useimmissa tapauksissa tätä sekvenssirakennetta käytetään kuitenkin osana ohjelmaa ja muodostaa monimutkaisen ohjelman yhdessä muiden rakenteiden kanssa, kuten yhdistelmälausekkeet haararakenteissa, silmukkarungot silmukkarakenteissa ja pian.
Valitserakenne
Althoughtheprogramofthesequencestructurecansolvetheproblemsofcalculationandoutput,itcannotbejudgedandthenselected.Forproblemsthatneedtobejudgedfirstandthenselected,aselectionstructureshouldbeused.Theexecutionoftheselectionstructureisbasedoncertainconditionstoselecttheexecutionpath,ratherthanstrictlyinaccordancewiththephysicalorderofthestatements.Thekeytotheprogramdesignmethodofselectingthestructureistoconstructappropriatebranchconditionsandanalyzetheprogramflow,andselecttheappropriateselectionstatementaccordingtothedifferentprogramflow.Theselectedstructureissuitableforcalculationswithconditionaljudgmentssuchaslogicorrelationalcomparison.Whendesigningsuchprograms,itisoftennecessarytodrawtheprogramflowchartfirst,andthenwritethesourceprogramaccordingtotheprogramflow.Inthisway,theprogramdesignanalysisisseparatedfromthelanguage.Makestheproblemsimpleandeasytounderstand.Theprogramflowchartisbasedontheprogramexecutionflowchartdrawnbytheproblem-solvinganalysis.
Pykälärakenne
Thecyclicstructurecanreducetheworkloadofrepetitivewritingofthesourceprogram,andisusedtodescribetheproblemofrepeatedexecutionofacertainalgorithm.ThisisprogramdesignTheprogramstructurethatcangivefullplaytocomputerspecialtiesinClanguageprovidesfourkindsofloops,namelygotoloop,whileloop,dowhileloopandforloop.Thefourloopscanbeusedtodealwiththesameproblem.Undernormalcircumstances,theycanreplaceeachother.However,itisgenerallynotrecommendedtousegotoloops,becauseforciblychangingtheorderoftheprogramwilloftenbringunexpectederrorstotheoperationoftheprogram.
Specialattentionshouldbepaidtotheendingstatement(thatis,thechangeoftheloopvariablevalue)intheloopbody,otherwiseitmaybecomeanendlessloop,whichisacommonmistakeofbeginners.
Thesimilaritiesanddifferencesofthethreeloops:whenusingwhileanddowhileloops,theinitializationofloopvariablesshouldbebeforetheloopbody,andtheforloopisgenerallycarriedoutinstatement1;whileloopandforloopTheexpressionisjudgedfirst,andthentheloopbodyisexecuted.Thedowhileloopexecutestheloopbodyfirstandthenjudgestheexpression.Thatistosay,theloopbodyofdowhileisexecutedatleastonce,whilethewhileloopandformaynotbeexecutedonce..Alsonotethatthesethreetypesofloopscanallusethebreakstatementtojumpoutoftheloop,andusethecontinuestatementtoendtheloop.Theloopformedbythegotostatementandtheifcannotbecontrolledbythebreakandcontinuestatements.
Sequentialstructure,branchstructureandloopstructurearenotisolatedfromeachother.Therecanbebranchesandsequencestructuresinloops,andloopsandsequencestructuresinbranches.Infact,nomatterwhichstructure,itcanbegeneralizedThinkofthemasonesentence.Intheactualprogrammingprocess,thesethreestructuresareoftencombinedtoimplementvariousalgorithmsanddesigncorrespondingprograms.However,theprogrammingproblemsarerelativelylarge.Theprogramswrittenareoftenverylongandthestructureisrepeated,resultinginpoorreadabilityanddifficulty.UnderstandthatthewaytosolvethisproblemistodesigntheCprogramintoamodularstructure.
Tietty sisältö:
Forloop
Forsilmukan rakenne on erottuvin kielelläSilmukkalauseke onjoustavin ja kätevin käyttää. Sen yleinen muoto on:for(lauseke1;lauseke2;lauseke3)silmukkalauseke.(joista;ei voi jättää pois)
Expression1isaninitialvalueexpression,whichisusedtoassigninitialvaluestotheloopvariablesbeforetheloopstarts.
Expression2isaloopcontrollogicexpression,whichcontrolstheconditionofloopexecutionanddeterminesthenumberofloops.
Expression3modifiestheexpressionfortheloopcontrolvariable,whichmakestheforlooptendtoend.
Theloopbodystatementisastatementthatisexecutedrepeatedlywhentheloopcontrolconditionissatisfied.
Butintheentireforloopprocess,expression1isonlycalculatedonce,expression2andexpression3maybecalculatedmultipletimes,ormaynotbecalculatedonce.Thebodyoftheloopmaybeexecutedmultipletimes,oritmaynotbeexecutedonce.
Suorita ensin lauseke2, suorita sitten silmukkarakenne ja lopuksi lauseke3, ja jatka silmukoita näin.
TheforloopstatementisthemostpowerfulstatementintheClanguage,anditcanevenreplaceotherloopstatementstoacertainextent.
tee
doloopstructure,do1while(2);executionorderis1->2->1...silmukka,2onthecyclecondition.
kun
whileloopstructure,suoritusjärjestyswhile(1)2;on1->2->1...silmukka,1isheloopehto
Ylempänä oleva lauseke, kun silmukkaehtoilmaisua,silmukka jatkuu ja jos se on väärä, se hyppää pois silmukasta.
Function
Cprogramiscomposedofasetofvariablesorexternalobjectsoffunctions.Afunctionisaself-containedexecutioncodesegmentthatcompletescertainrelatedfunctions.Wecanthinkofafunctionasa"blackbox",youcangettheresultaslongasyousendthedatain,andtheexternalprogramdoesn'tknowhowthefunctionworksinside.Whattheexternalprogramknowsislimitedtowhatisinputtothefunctionandwhatthefunctionoutputs.Functionsprovideameansofprogrammingtomakeiteasytoread,write,understand,eliminateerrors,modify,andmaintain.
ThenumberoffunctionsinaCprogramisactuallyunlimited.Ifthereisanyrestriction,thatis,theremustbeatleastonefunctioninaCprogram,andtheremustbeoneandonlyoneofthemThefunctionnamedmain,thisfunctioniscalledthemainfunction,andtheentireprogramisexecutedfromthismainfunction.
Clanguageprogramsencourageandencouragepeopletodivideabigproblemintosub-problems,whichcorrespondstosolvingasub-problemandcompileafunction.Therefore,ClanguageprogramsgenerallyconsistofalargenumberofsmallfunctionsratherthanafewLargefunctionsconstitutetheso-called"smallfunctionsconstitutealargeprogram."Theadvantageofthisisthateachpartisfullyindependentofeachotherandthetaskissingle.Therefore,thesesufficientlyindependentsmallmodulescanalsobeusedasasmall"component"withafixedspecificationtoformanewlargeprogram.
ForsomanyyearsinthedevelopmentofClanguage,thereareavastarrayofsystemsandprogramsdevelopedinClanguage.Alotoflibraryfunctionsthatcanbeuseddirectlyhavebeenaccumulatedwhiledeveloping.
ANSICtarjoaa standardinmukaisia kielikirjastotoimintoja.
TurboC2.0,whichispreferredbyClanguagebeginners,providesmorethan400runtimefunctions,eachofwhichperformsaspecificfunction,whichuserscancallatwill.Thesefunctionsaregenerallydividedintoinputandoutputfunctions,mathematicalfunctions,stringandmemoryfunctions,functionsrelatedtoBIOSandDOS,characterscreenandgraphicsfunctionfunctions,processcontrolfunctions,directoryfunctions,etc.
TheWindowsSDKprovidedbytheWindowssystemcontainsthousandsoffunctionsrelatedtoWindowsapplicationdevelopment.Otheroperatingsystems,suchasLinux,alsoprovidealargenumberoffunctionsforapplicationdeveloperstocall.
Asaprogrammer,youshouldtrytobefamiliarwiththefunctionsofthetargetplatformlibraryfunctions.Inthisway,youcandevelopapplicationsforaspecificplatformwithease.Forexample,asaWindowsapplicationdeveloper,youshouldbeasfamiliarwiththeWindowsSDKaspossible;asaLinuxapplicationdeveloper,youshouldbeasfamiliarwithLinuxsystemcallsandPOSIXfunctionspecificationsaspossible.
Operationsymbol
Whatismorespecialisthatthebitshiftright(>>)operatorcanbearithmetic(complementthemostsignificantbitontheleftend)orlogic(complement0ontheleftend)Displacement.Forexample,if11100011isshiftedtotherightby3bits,thearithmeticshifttotherightbecomes11111100,andthelogicalshifttotherightbecomes00011100.Sincetherightshiftofarithmeticbitsismoresuitableforprocessingnegativeintegers,almostallcompilersshiftrightarithmeticbits.
Alhaalta tulevien operaattorien etusija on karkeasti: yksioperaattorit, aritmeettiset operaattorit, relaatiooperaattorit, loogiset operaattorit, ehdolliset operaattorit, määritysoperaattorit(=)ja pilkkuoperaattorit.
Ohjelmointikehitys
Kääntäjä
GNU-organisaation kehittämä GCC,avoinlähde ja ilmainen kääntäjä
MinGW,Windows-käyttöjärjestelmän GCC
Clang, avoimen lähdekoodin BSD-protokollapohjainen LLVM-pohjainen kääntäjä
VisualC++::cl.exe, MicrosoftVC++:n mukana tuleva käännös
integraatiokehitysympäristö
Koodi::Blocks,avoin lähdekoodi ja ilmainen C/C++IDE
CodeLite,avoin lähdekoodi, cross-platform C/C++integroitu kehitysympäristö
Dev-C++,portableC/C++IDE
C-vapaa
LightTable
VisualStudioseries
Esimerkkiohjelma
Seuraava on yksinkertainen ohjelma, joka tulostaa merkkijonon "Hei, maailma!" vakiotulostuslaitteessa (stdout). Samankaltaista ohjelmaa käytetään yleensä ensimmäisenä ohjelmana ohjelmointikieltä opetettaessa:
#includeintmain(){printf("Hello,World!\n");return0;}
Ohjelman ensimmäinen rivi#includeispreprocessordirective, joka käskee kääntäjälle sisällyttäädio.h-tiedoston ennen varsinaista käännöstä.
Seuraava riviinmain()onpäätoiminto,jaohjelma suoritetaan täältä.
SittenNextlineprintf(...)on toinen käytettävissä oleva toimintoC, joka näyttää näytöllä viestin "Hei, maailma!".
Sittenreturn0;Lopetamain()functionandreturnthevalue0.
#includeintmain{voidmove(int*xa,int*xb);inta,b;printf("Pleasetwonumbersa,b:");scanf("%d,%d",& ;a,&b);move(&a,&b);printf("a=%d,b=%d\n",a,b);return0;}voidmove(int*xa,int *xb){inta;a=*xa;*xa=*xb;*xb=a;}
1.Kolmas rivi on funktion ilmoitus,joka ilmaisee toiminnon ilman palautusarvoa kahdella osoitinparametrilla. Koska funktion määritelmä on kutsutoiminnon alla, se on ilmoitettava.
2.Neljäs rivi onmuuttujien määritelmä, joka määrittelee kaksi kokonaislukumuuttujaa.
3.Syötäkaksi numeroa kuudennelle riville,joka on kirjoitettava pilkulla kuin1,0.Laita kaksi numeroa muuttujiksijab."&"istheaddressoperaattori.
4.Nämä seitsemäs rivi kutsuusiirtofunktionmuuntaakahden muuttujan arvot.
5.Päätoiminnon jälkeen onsiirtotoiminnon määritelmä.
Ascanbeseenfromthisexample,pointervariablescangetmorereturnvalues,whichisveryconvenient.