乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      快速上手系列-C語言之基礎(chǔ)篇(一)

       岐岐feng 2018-06-20

      按照之前的計劃,這篇文章本該寫C語言簡介,包括一些歷史背景,發(fā)展?fàn)顩r, 語言特點什么的,這些東西著實比較啰嗦。

      吃飯用的筷子,到現(xiàn)在我都不知道它的由來,不知道它是在什么歷史背景下誕生的

      有些東西還是有必要了解一下,比如,C語言所產(chǎn)生的代碼運行速度比匯編語言編寫的代碼運行速度稍慢一點,但還是有得一拼,同時C語言要比匯編語言編寫的代碼可讀性高,可移植性好。另外,相對于其他高級語言,比如C++、java、C#等來說,C語言編寫的代碼運行效率要高。

      在介紹C語言的數(shù)據(jù)類型和基本語法之前,先說說C程序結(jié)構(gòu)和C文件結(jié)構(gòu)。

      1、C程序結(jié)構(gòu):

      ①預(yù)處理指令;

      ②變量、函數(shù)、語句、表達(dá)式、注釋等;

      ③返回值;

      以一段簡單的打印輸出“hello world”代碼為例:

      快速上手系列-C語言之基礎(chǔ)篇(一)

      注意:一個完整的C語言程序,是由一個、且只能有一個main()函數(shù)(又稱主函數(shù))和若干個其他函數(shù)結(jié)合而成,或僅由一個main()函數(shù)構(gòu)成;

      接下來看看C語言程序運行結(jié)構(gòu):基本的三種程序結(jié)構(gòu)為順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。

      順序結(jié)構(gòu):程序按順序執(zhí)行,不發(fā)生跳轉(zhuǎn)。

      選擇結(jié)構(gòu):依據(jù)是否滿足條件,執(zhí)行相應(yīng)功能。

      (1)if(表達(dá)式) 語句;

      (2)if(表達(dá)式)語句1;else語句2;

      (3)if(表達(dá)式1)語句1;else if(表達(dá)式2)語句2;...else語句n;

      注意:第三種方式,即: if......else if..........else if.....else,只能響應(yīng)一個條件。

      循環(huán)結(jié)構(gòu):

      while ( ) { } 語句 先判斷表達(dá)式后執(zhí)行.

      do{ }-while( ) 語句 先執(zhí)行語句后判斷表達(dá)式.

      for( ; ; ){ }

      2、C文件結(jié)構(gòu):

      一個基于C的軟件系統(tǒng)一般由以下文件構(gòu)成:

      若干個C文件:每個C文件中包含若干個函數(shù)。

      若干個頭文件:每個頭文件中包含一些數(shù)據(jù)結(jié)構(gòu)的定義以及C函數(shù)、變量的原型聲明。

      若干個庫文件:庫文件是編譯后的二進(jìn)制文件,一般由若干C文件編譯后組成,其中包含了若干個函數(shù)的可執(zhí)行代碼;這些庫文件中的函數(shù)可執(zhí)行代碼在連接的時候合并到最終的可執(zhí)行文件中。

      若干個make文件:make文件描述了多個文件中的依賴關(guān)系以及生成最終可執(zhí)行文件或庫文件所需要的信息。

      由于篇幅較小,再加點內(nèi)容,順便寫寫C語言的關(guān)鍵字和控制語句。

      1、關(guān)鍵字:

      這里介紹下C語言的32個關(guān)鍵字(至于ISO推出的C99標(biāo)準(zhǔn)新增的5個C語言關(guān)鍵字和C11標(biāo)準(zhǔn)新增了7個C語言關(guān)鍵字目前沒有做過過多了解,這里就不再介紹)

      (1)數(shù)據(jù)類型關(guān)鍵字(12個)

      char,short,int,long,float,double,unsigned,signed,void,struct,union,enum;

      char:字符型類型數(shù)據(jù)

      short:短整型數(shù)據(jù),修飾int,一般省略被修飾的int;// short int a = 10;一般寫成 int a = 10;

      int:整型數(shù)據(jù),通常為編譯器指定的機器字長;

      long:長整型數(shù)據(jù),修飾int,一般省略被修飾的int;

      float:單精度浮點型數(shù)據(jù);

      double:雙精度浮點型數(shù)據(jù);

      unsigned, signed是修飾符,分別表示無符號和有符號,我們時常寫的“ int a=123;”其實就是“signed int a = 123;”,表示有符號整型

      void: 聲明函數(shù)無返回值或無參數(shù),修飾指針時表示無類型指針,void不可用來定義變量,但可以用它來修飾各種變量;

      struct:用來聲明結(jié)構(gòu)體;

      union:用來聲明共用體或者叫聯(lián)合體;

      enum:用于枚舉類型的聲明;

      關(guān)于結(jié)構(gòu)體,共用體,枚舉的用法以及結(jié)構(gòu)體和共用體的區(qū)別以后單獨再寫;(2)控制語句關(guān)鍵字(12個)

      if,else,for,do,while,break,case,continue,default,return,switch,goto(盡量別使用);

      (3)存儲類關(guān)鍵字(4個)

      auto,extern,register,static

      auto:聲明自動變量(很少使用);

      extern:聲明變量外部可用,可以置于變量或者函數(shù)前,以表示變量或者函數(shù)的定義在別的文件中,可以外部使用;

      static:聲明靜態(tài)變量,static修飾的變量存儲在靜態(tài)變量區(qū),修飾全局變量時,表示該變量為全局靜態(tài)變量,作用域為當(dāng)前文件;修飾函數(shù)時表示函數(shù)作用域為當(dāng)前文件內(nèi)部; 修飾局部變量時,表示該變量為靜態(tài)局部變量,只被初始化一次,賦值之后值會保持最新的值,也就是說局部靜態(tài)變量的生命周期被擴展到整個程序運行的時間段內(nèi)。這里不知道有沒有說清楚,干脆看個例子簡單明了:

      快速上手系列-C語言之基礎(chǔ)篇(一)

      register:聲明寄存器變量,修飾符暗示編譯程序相應(yīng)的變量將被頻繁地使用,如果可能的話,應(yīng)將其保存在CPU的寄存器中,以加快其存儲速度。

      注:register變量必須是能被CPU所接受的類型,這通常意味著register變量必須是一個單個的值,并且長度應(yīng)該小于或者等于整型的長度。不過,有些機器的寄存器也能存放浮點數(shù)。因為register變量可能不存放在內(nèi)存中,所以不能用“&”來獲取register修飾變量的地址,如:

      快速上手系列-C語言之基礎(chǔ)篇(一)

      (4)其他關(guān)鍵字(4個)

      const,sizeof,typedef,volatile

      const:const修飾變量,表示被修飾的變量不可被當(dāng)前線程或進(jìn)程改變;例如:const int *p = 100; //const修飾int *,表示*p的值不可變*p = 50; //錯誤,*p的值不可變再比如:int a = 0;int b = 0;int * const p = &a;//const修飾指針p,表示指針變量地址不可變;p = &b; //錯誤,地址不可變,不能指向其他地址;

      sizeof:計算數(shù)據(jù)類型長度或者變量占內(nèi)存空間大小,sizeof長得像函數(shù),其實它是個關(guān)鍵字;

      typedef:為某種數(shù)據(jù)類型定義一個新的名字;

      volatile:確保本條指令不會因編譯器的優(yōu)化而省略,且要求每次直接讀值,簡單地說就是防止編譯器對代碼進(jìn)行優(yōu)化。比如如下程序:num=0x65;num =0x66;num =0x67;num =0x68;對外部硬件而言,上述四條語句分別表示不同的操作,會產(chǎn)生四種不同的動作,但是編譯器就不能像對待純粹的程序那樣對上述四條語句進(jìn)行優(yōu)化,只認(rèn)為 num=0x65(即忽略前三條語句,只產(chǎn)生一條機器代碼)。如果鍵入volatile,則編譯器會逐一的進(jìn)行編譯并產(chǎn)生相應(yīng)的機器代碼(四條)

      2、語句

      C語言利用函數(shù)體中的可執(zhí)行語句,向計算機系統(tǒng)發(fā)出操作指令;按照語句功能或構(gòu)成的不同,可將C語言的語句分為5類:

      (1)控制語句(9條,可以細(xì)分為三種):

      選擇結(jié)構(gòu)控制語句

      if()~else~, switch()~

      循環(huán)結(jié)構(gòu)控制語句

      for()~, while()~, do~while(), break, continue

      其他控制語句

      return, goto

      return功能:終止執(zhí)行函數(shù),賦值(可選); 將控制權(quán)返回給調(diào)用函數(shù)的下一條語句

      goto:無條件轉(zhuǎn)移語句,跳轉(zhuǎn)語句;

      快速上手系列-C語言之基礎(chǔ)篇(一)

      如上代碼,在不使用goto的情況下,會分別打印出line 1、line 2、line3,在打印完line 1后使用goto語句,則直接跳轉(zhuǎn)到goto目標(biāo)代碼,即代碼中的end部分;

      (2)函數(shù)調(diào)用語句:

      函數(shù)調(diào)用語句由一次函數(shù)調(diào)用加一個分號構(gòu)成.

      例如:

      printf(“hello world!”);

      scanf(“%d”,&num);

      (3)表達(dá)式語句:

      表達(dá)式語句是由表達(dá)式后加一個分號構(gòu)成,

      例如:

      “num = 10”是表達(dá)式,

      “num = 10;”是賦值語;

      (4)空語句:

      空語句由一個分號構(gòu)成,空語句什么操作也不執(zhí)行.。

      (5)復(fù)合語句:

      復(fù)合語句由大括號括起來的一組語句構(gòu)成。

      {

      { } //復(fù)合語句,注意大括號后不需要分號

      }

      復(fù)合語句一般與其它語句配合使用:

      如for( ; ; ) { }

      快速上手系列-C語言之基礎(chǔ)篇(一)

      這玩意兒想的時候不多,寫起來卻很多,深究起來就多的完全說不完(┬_┬),C語言基礎(chǔ)部分本應(yīng)該在本篇文章中寫完,由于時間問題,下次再寫吧。

      下篇開始說說數(shù)據(jù)類型,運算符與表達(dá)式,想了解的小伙伴們,可以關(guān)注收藏,后續(xù)內(nèi)容請見下回分解。

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多