C 教材:檔頭與註解

所謂程式 (program),是指一個可以獨立執行的檔案。 例如 lscatgrep 都是程式。 程式可以由許多種不同的方法創造出來。 在此,我們要介紹的是,利用 C 程式語言撰寫原始碼, 經過 C 編譯器產生程式。 在這一開頭的幾篇教材內,我們必須要先介紹一些術語和觀念。 所以,在進度上比較緩慢,請讀者不要著急。

一套由 C 語言寫的程式,是由若干個原始碼檔案所組成。 對初學者而言,程式都只由一個原始碼檔案組成。 例如 hello.c 是一個 C 語言原始碼 (C source code) 檔案。


#include <stdio.h>

/* 第一個 C 程式  (hello.c) */
main() {
   printf("hello, world\n");
}

每一個 C 語言原始碼檔案,在格式上,可以分成三大部分:檔頭 (header)、 註解 (comment) 和 語句 (expression)。 在這一節中,我們介紹檔頭和註解。

如果一列的第一格是 #,這一整列就屬於檔頭部分。 注意,必須第一格就是 #。所以

#include <stdio.h>
屬於檔頭部分。

凡是由 /* 開始,一直到 */ 為止的任何文字, 包括 /**/ 在內,都是註解。 顧名思義,註解文字是用來寫註解的。註解是給人看的,不是給編譯器看的。 所以註解文字不會被編譯到程式裡面去。

/* 第一個 C 程式 (hello.c) */
屬於註解部分。

註解可以出現在原始碼檔案的任何位置,例如

#include <stdio.h>     /* 這是檔頭部分 */
是可以的。註解可以包含 linefeed 字元,因此註解文字可以超過一行,例如
#include <stdio.h>     /* 這是檔頭部分
        我們以後再解釋 stdio.h 是什麼意思 */
這樣也是可以的。 但是,註解裡面不能再出現 /* 符號,例如
/* 註解是由 /* 符號開頭的 */
這樣是不可以的。

除了檔頭和註解以外的字元,全部被當做是語句。

很多初學者記不得 stdio.h,現在我們又不便解釋。請背誦起來。 為了方便記憶,暫時只解釋 std 是 standard 的意思,io 是「輸入/輸出」 input/output 的縮寫,而 h 是檔頭 (header) 的縮寫。 有些人或書籍的作者,會告訴您這一句不必寫也沒問題。 目前是沒問題,但是以後會有問題。所以請按照本教材的說明來做。

習題

  1. 在以下程式原始碼中,指出哪些列是檔頭,哪些是註解? (您不必企圖去瞭解這個程式的意義,也許再過六個小時,您就明白了。)
    #include <stdio.h>
    #define BUFSIZE 1025
     
    /* 函式的宣告 */
    int getline(char[]);
     
    /* 列出每列的字元個數 (不含 linefeed) 及每列的內容 */
    main() {
        int n;
        char buf[BUFSIZE];                 /* 宣告暫存佇列 */
        
        while ((n = getline(buf)) > 0)
            printf("%6d: %s", n-1, buf);
        return 0;
    }
     
    /* get a line, return line length */
    getline(char line[]) {                /* 注意,不宣告序列維度 */
        int c, i;
    
        for (i=0; i<BUFSIZE-1 && (c=getchar()) != EOF && c != '\n'; ++i)
            s[i] = c;
        if (c == '\n') {
            s[i] = c;
            ++i;
        }
        s[i] = '\0';
        return i;
    }

[BCC16-C]
單維彰 (2000/03/23) ---
[Prev] [Next] [Up]