1. 程式人生 > >C語言(一)

C語言(一)

第一章  基礎知識

  • 1.1  基本框架
    • 任何一個c語言程式都必須包括以下格式:
      • int main(int argc, char *argv[] )
      • {
      • return 0;
      • }
      • 這是c語言的基本結構,任何一個程式都必須包含這個結構。括號內可以不寫任何內容,那麼該程式將不執行任何結果。
    • 1.1.1  main()
        • 在c語言中稱之為“主函式”,一個c程式有且僅有一個main函式,任何一個c程式總是從main函式開始執行,main函式後面的一對圓括號不能省略。
        • main(int argc,char**argv) {}  第一個引數是表示輸入的字串的數目,第二個引數是指向存放的字串
      • 1.1.1.1  C語言中int main()和int main(void)區別
        • 1.K&R書上main函式定義寫成main(){...} 形式,不寫返回值型別也不寫引數列表,這是Old Style C的風格。Old Style C規定不寫返回值型別就表示返回int型,不寫引數列表 就表示引數型別和個數沒有明確指出。這種寬鬆的規定會導致很多複雜的Bug產生,不幸的是現在的C標準為了相容舊的程式碼仍然保留了這種語法。
        • 2. 其實系統在呼叫main函式時是傳引數的,所以main函式最標準的形式應 該是int main(int argc, char *argv[])。C標準也規定了int main(void) 這種形式,如果不使用系統傳進來的兩個引數也可以寫成這種形式。但除了這兩種形式之外,以其它形式定義main函式都是錯誤的或不可移植的。
      • 1.1.1.2  標準形式
        • 在最新的 C99 標準中,只有以下兩種定義方式是正確的:
          •  int main(void){}
        •  //整數型別主函式(無型別) = int main()
          •  int main(int argc,char **argv)
        •   //整數型別主函式(整數型別 統計引數個數,字元型別*陣列指標至字元[])
      • 1.1.1.3  C++98中的定義
        • 如下兩種main函式的定義方式:
          • int main( )
          • int main( int argc, char *argv[] )
    • 1.1.2  函式體
      • 被大括號{ }括起來的內容稱為main函式的函式體,這部分內容就是計算機要執行的內容.在{  }裡面每一句話後面都有一個分號(;),在c語言中,我們把以一個分號結尾的一句話叫做一個c語言的語句,分號是語句結束的標誌。
    • 1.1.3  #include<stdio.h>
      • 1.1.3.1  注意
        • (1)以#號開頭
        • (2)不以分號結尾 
        • (3)# include”stdio.h”也是對的
      • 1.1.3.2  預處理
        • 這一行沒有分號,所以不是語句,在c語言中稱之為命令列,或者叫做“預編譯處理命令”。 編譯預處理不是C語言的一部分,不佔執行時間,不要加分號。C語言編譯的程式稱為源程式,它以ASCII數值存放在文字檔案中。
      • 1.1.3.3  # include “stdio.h”與#include <stdio.h>區別
        • <>搜尋順序為:系統目錄-->環境變數目錄-->使用者自定義目錄。
        • ""則是使用者自定義目錄-->系統目錄-->環境變數目錄.
      • 1.1.3.4  檔案包含的考查點:
        • 這裡一個C語言程式是有兩個檔案組成,分別是no1.c, no2.c。那麼no1.c中最開始有個#include”no2.c”他表示把第二個檔案的內容給包含過來,那麼no1.c中呼叫add()函式的時候就可以了把數值傳到no2.c中的被呼叫函式add()了。
        • 一個檔案必須要有main函式。這句話錯了。例如:no2.c就沒有。
        • 標頭檔案一定是以.h結束的。這句話錯了。例如:no1.c中就是#include”no2.c”以.c結尾的。
    • 1.1.4  註釋
      • 程式中以 /*開頭並且以*/結尾的部分表示程式的註釋部分,註釋可以新增在程式的任何位置,為了提高程式的可讀性而新增,但計算機在執行主函式內容時完全忽略註釋部分,換而言之就是計算機當做註釋部分不存在於主函式中。
      • 注意:1.F      //      /*
      • */
      • 2.F      /*    /*  */     */
      • 3.T     //    //
  • 1.2  C程式的生成過程
    • C程式是先由原始檔經編譯生成目標檔案,然後經過連線生成可執行檔案。  
    • 編譯過程
    • 源程式的副檔名為 .c  -(編譯)-> 目標程式的副檔名為  .obj  -(連線)->可執行程式的副檔名為 .exe 。
  • 1.3  識別符號
    • 概念
      • 在編寫程式時,必須為函式、變數等命名,這個名字稱為識別符號。
    • 1.3.1  識別符號分類(都是·小寫)
      • ①關鍵字(32個)(有固定含義,不可改變)
        • 型別說明符:int,float,double等
        • 語句定義符:if,for,while等
      • ②預定義識別符號(有特殊含義,可以改變)
        • 庫函式的名字:printf , scanf 等
        • 編譯預處理命令名:include等
      • ③使用者自定義的識別符號  
        • ⅰ格式合法,ⅱ不能使用關鍵字,ⅲ見名知意
    • 1.3.2  關鍵字
      • 關鍵字是具有特定含義的,專門用來說明c語言特定成分的一類識別符號,不能用作使用者的識別符號。
        • auto break       case        char          union
        • do         double     else        enum     extern
        • goto           if     int        long short
        • signed          static        sizeof      struct       switch
        • unsigned void for    while        typedef
        • continue    float     return          typedef     default
    • 1.3.3  預定義識別符號
      • 預定義識別符號在c語言中也有特定的含義,但可以用作使用者識別符號,預定義識別符號分為兩類:
        • (1)、庫函式名字,比如(printf,scanf,sin,isdigit等)
        • (2)、編譯處理命令名,比如(define,include)
    • 1.3.4  使用者識別符號
      • 使用者根據需要自己定義的識別符號稱為使用者識別符號。無論如何自定義識別符號,都必須符合識別符號的三條命名規則。
      • 注意:正常系統函式由_開頭,因此不建議自定義函式以下劃線開
    • 1.3.4.1  命名規則
      • C語言中識別符號的命名規則如下:
        • 1、識別符號只能由字母、數字、下劃線組成;
        • 2、識別符號的第一個字母必須是字母和下劃線;(開頭)
        • 3、識別符號區分大小寫字母,如If和if是兩個完全不同的識別符號。
      • 合法識別符號如下:
        • A6       b_3   _mn   _
      • 非法的識別符號如下:
        • ab#12, 8m , tr3:4 , yes no
      • 識別符號不能與程式中具有特殊意義的關鍵字相同,
      • 不能與使用者編制的函式名、C語言庫函式相同,
      • 在程式中各種識別符號儘量不要重複,以便區分。
      • 選擇變數名和其他識別符號時,應注意做到 “見名知義”。