程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言基礎知識 >> C 語言基礎教程(一)顏色加亮

C 語言基礎教程(一)顏色加亮

編輯:C語言基礎知識
首先請看下面這個簡單的 C 程序,猜猜它會做些什麼。猜不出來也沒關系,後面會有詳細的解說。
         #include <stdio.h>

         int main( void )            /* 一個簡單的程序 */
         {
             int num;                  /* 定義一個名叫 num 的變量 */
             num = 1;                  /* 將 1 賦值給 num         */

             printf( "This is a simple C program.\n" ); /* 調用 printf 函數 */
             printf( "My favorite number is %d because it is first.\n", num );

             return 0;
         }

     在對這個程序進行詳細說明之前,我想先請您用編譯器把它編譯成可執行文件,並且運行,看看運行結果和您的猜想是否一致。如果不懂如何進行編譯,請參考這三篇文章:
      編譯器使用方法
    編譯器Dev-C++安裝&使用教程
    Dev-C++ 下載

     下面,我將分兩步對這個程序進行詳細的講解。第一步是概要說明,也就是對程序中每一行代碼的含義作簡單講解,以幫助您對這個程序有一個大致的理解。第二步是詳細說明,也就是程序中的每一行代碼進行詳細的講解,以加深您的理解。

    一、概要說明
                 #include <stdio.h>    <-   把另外一個文件包含進來
            這行代碼命令編譯器把頭文件.h 文件)stdio.h 中的內容包含到我們的
       程序中。stdio.h是C語言的標准頭文件之一,提供對鍵盤輸入和顯示輸出等的
       支持。要使用 printf 函數,就應該包含這個頭文件。順帶一提,stdio 代表
       standard input/output,也就是標准輸入輸出的意思。

                 int main(void)    <-   函數頭
             C 程序由一個或多個函數組成。我們的這個程序只有一個函數:main 函數。
       圓括號 () 表明 main 是一個函數;int 表明 main 函數返回一個整數;void 表明
       main 函數不接受任何參數。在此,請您緊記,int main(void) 是 ISO/ANSI C
     
 標准中定義的 main 函數定義方法之一。

                 /* a simple program */    <-   注釋
             /* 和 */ 用於對程序進行注釋說明,幫助讀者更快更好地理解程序。編譯器
       會忽略 /* 和 */ 之間的內容(包括 /* 和 */),不會對它們進行編譯。

                 {        <-   函數體的開端
             這個開大括弧 { 標志著函數體開始。函數體以閉大括弧 } 結束。在 { 和 }
       之間的語句都屬於這個函數。

                 int num;     <-   聲明並且定義變量 num
             這個語句表明我們聲明並且定義了一個名叫 num 的變量。int 表明這個變量為
       整型變量

                 num = 1;     <-   賦值語句
             這個語句將 1 賦值給變量 num 。執行這個語句後,num 的值等於 1 。

                   printf( "This is a simple C program.\n" );    <-   函數調用語句
             printf 函數是 C 語言標准函數庫裡的函數。這個語句調用 printf 函數在
        屏幕上顯示“This is a simple C program.”,並且換行。\n換行符,它提示
        printf 開始新的一行,也就是將光標移動到下一行的開端。如果上面的語句中沒有
        \n ,那就不會換行,而且光標會緊跟在“This is a simple program.”後面。

                   printf( "My favorite number is %d because it is first.\n", num );
             %d 告訴 printf 用num的值替換掉 %d ,並且以整數形式顯示num的值。
        因為 num 的值為 1 ,所以這個語句在屏幕上顯示“My favorite number is 1
       because it is first.
”,並且換行。

                 return 0;    <-   返回語句
             C 程序應該返回一個數值給調用它的媒介。返回 0 代表程序無誤退出,
        返回 1 代表程序運行時出錯退出。

                 }     <-   函數體結束
           函數體以閉大括弧 } 結束。

    二、詳細說明
         現在,讓我們進一步來了解每一行代碼的含義。下面的內容很基礎,也很重要
     必須認真弄懂,牢牢掌握

          1. #include 預處理指令頭文件
              在編譯器對我們寫的源程序進行編譯之前,預處理器會對我們的寫的源代碼
       
進行必要的處理,稱為預處理。#include 就是一個預處理指令,它命令預處理器
        進行的預處理是:把特定的頭文件包含到我們的源代碼裡
            #include <stdio.h>的作用是將頭文件 stdio.h 裡的內容包含進我們的程序,
        產生的結果是將 stdio.h 裡的內容一字不漏地插入 #include <stdio.h>出現的
        地方,並且刪除 #include <stdio.h>。換句話說,就是用 stdio.h 裡的內容替換
        #include <stdio.h>。這個過程是在預處理階段完成的。C 語言的這種包含文件的
        機制為多個程序共享相同信息提供了極大的方便。
            stdio.h 是 C 語言標准中定義了的頭文件,它包含著輸入輸出函數的信息。
        所有 C 編譯器都應該有這個頭文件,這是 ANSI/ISO C 標准中規定的。當然,
        ANSI/ISO C 規定的編譯器必須提供的頭文件可不止這麼一個。標准還規定了許多
        別的頭文件,那些我們會在以後慢慢學到。
            有些程序需要包含 stdio.h ,而有些不需要。如果我們的程序沒有使用 printf
        函數,那就不需要包含 stdio.h 。
            頭文件中包含著編譯器進行編譯時所需的信息。頭文件中可能指明了函數名和
        函數調用方法,但是這些函數的實現代碼並不在頭文件中,而是在預先編譯好了的
        庫文件裡。
            鏈接器負責在庫文件中尋找我們的程序所需的代碼,並且把那些代碼和我們寫的
        程序進行鏈接,從而將我的寫的程序鏈接成可執行文件。一句話,頭文件用於指導
        編譯器正確地將我們寫的源程序編譯成可執行文件。

          2. main 函數
               在 C 語言中,main 函數是主函數。每個 C 程序都必須有且只能有一個
       
main 函數(主函數)!C 程序從 main 函數開始執行,並且在 main 函數中結束。
            int是 main 函數的返回值類型,它表明 main 函數應該返回一個整數給程序的
        激活者(如操作系統)。
            如果您想了解更多關於 main 函數的東西,請點擊下面的鏈接:
              C/C++ 誤區一:void main

          3. 注釋
                    /* a simple program */
              /* */ 之間的內容都是注釋。對程序進行適當的注釋可以幫助讀者(包括您自己)
          更快更好地理解您寫的代碼。注釋可以在源程序中的任何地方書寫。/* 和 */ 之間的
          任何內容(包括 /* 和 */)都會被編譯器忽略掉。注意:/ 和 * 必須緊挨在一起,
          它們之間不能有空格。
                     /* 我是注釋 */
                     /*我是
                       跨行注釋*/
                     /*
                       我也是注釋
                     */
              以上的注釋都是合法的;但下面的注釋是非法的,因為沒寫注釋結束標記 */。
                     /* 非法,沒有注釋結束標記
              下面這個注釋可能會出乎你的意料:
                     /* 我是注釋開始標記
                     /* 哦哦,我不是注釋開始標記
                        我是注釋結束標記,我和第一個 /* 匹配,而不是和第二個 /* 匹配。*/
              上面這個注釋中,注釋結束標記 */ 和第一個 /* 匹配,它們之間的內容
          都被視為注釋。

              C99 中增加了另外一種注釋方式,這種注釋方式使用 // 作為注釋符,和 //
          處於同一行,並且在 // 右邊的內容都被當作注釋。/ 和 / 之間不能有空格。
                     // 我是注釋
                     int rigue;      //注釋放在這裡也是合法的
              上面的注釋在 C99 中是合法的,但是在 C89 中是非法的。也就是說,老舊的
          編譯器可能不支持 // 注釋符。VC6 支持 //,TC2 不支持。

          4. 大括號與函數體
               C 語言中,所有函數都以大括弧({ })作為界定符。函數體從開大括弧 {
        開始,以閉大括弧 } 結束。在後續教程中,我會對函數進行更詳細的講解。

          5. int num;
               這個語句聲明並且定義變量 num 。這一行末尾的分號(;)表明這一行
        是一個語句。; 是語句的一部分,單獨一個 ; 也是一個合法的 C 語句。
             int 是 C 語言中的一個關鍵字,它代表 C 語言裡的一種基本數據類型:整型。
        關鍵字是語言的保留字,不能用作其它用途。例如:我們不能關鍵字來做變量名或者
        函數名。
             標識符是指我們為變量或函數等取的名字。在這個語句中,num 就是標識符。
             C 語言中,所有變量在使用前都必須聲明。C89 中,變量的聲明必須位於
        函數體或者程序塊的開端。例如:
                  int main( void ) /* C89 */
                  { /* 函數體開始 */
                      int doors;
                      int dogs;
                      doors = 5;
                      dogs = 3;
                      { /* 程序塊開始 */
                           int dig;
                           int dug;
                           dig = 6;
                           dug = 8;
                      } /* 程序塊結束 */

                      return 0;
                  } /* 函數體結束 */
             而在 C99 中,聲明可以位於函數體或者程序塊的任何地方。但是,變量仍然
        需要在聲明之後才可使用。例如:
                  int main( void ) /* C99 */
                  { /* 函數體開始 */
                      int doors;
                      doors = 5;
                      { /* 程序塊開始 */
                          int dig;
                          dig = 6;
                          int dug;
                          dug = 8;
                      } /* 程序塊結束 */
                      int dogs;
                      dogs = 3;

                      return 0;
                  } /* 函數體結束 */
             上面的程序在 C99 中是合法的,但是在 C89 中卻是非法的。當前支持C99 的
        編譯器不多,所以上面的代碼您的編譯器很有可能編譯不了。故而,為了使我們的
        代碼具有良好的可移植性,我們應該盡可能少用,甚至不用 C99 中的新特性。

        6. 賦值
                  num = 1;
             賦值是 C 語言中的一種基本操作。上面的語句是一個賦值語句,它的含義
        是:將 1 賦值給變量 num 。賦值操作完成後,num 的值等於 1 。

        7. printf 函數
             printf( "This is a simple C program.\n" );
             printf( "My favorite number is %d because it is first.\n", num );
            這兩行代碼都調用了 printf 函數。printf 是一個標准 C 函數,也就是說,
        它是 C 語言標准函數庫裡定義了的函數。圓括號 () 表明 printf 是一個函數,
        圓括號裡的內容會被傳遞給 printf 函數。例如,上面第一行代碼把“This is a
        simple C program.\n”(不包括雙引號)傳遞給 printf 函數,然後由 printf
        函數把這些信息顯示於顯示器。\n換行符,它提示 printf 開始新的一行。
        正因為 \n 是換行符,所以 \n 不會顯示出來,而是進行了換行。如果上面的語句中
        沒有 \n ,那就不會換行。
            上面代碼第二行中的 %d 告訴 printf 用 num 的值替換掉 %d ,並且以
        整數形式顯示 num 的值。
             %d 被稱為占位符,它告訴 printf 應該在什麼地方顯示 num 的值。% 用於
        提醒 printf 在此處顯示一個變量的值(本例中是 num 的值);d 告訴 printf 以
        十進制整數的形式顯示 num 的值。

        8. return(返回)語句
                   return 0;
             這個 return 語句是我們程序中的最後一個語句。int main( void ) 中的 int
        表示 main 函數應該返回一個整數,所以我們要使用 return 語句來返回一個整數。
             如果您想了解更多關於返回值的東西,請點擊下面鏈接,查看文章的第四點
                   C/C++ 誤區一:void main

           
    上面所說的某些內容您暫時可能還不太理解,但是不用害怕,牢牢地把它們記住,然後繼續往下學吧!隨著學習的深入,就會逐漸搞明白。現階段只要有這個概念就足夠了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved