C 語言初學教材 - 第一章 變數、宣告與關鍵字

簡單的例子的程式碼如下

#include <stdio.h>

int main(void)
{
    int month, day, hour, min;
    char *name;
    
    month = 7;
    day = 27;
    hour = 9;
    min = 45;
    name = "kaiching";
    
    printf("\n\n今天是 %d 月 %d 日\n", month, day);
    printf("現在是上午 %d:%d\n", hour, min);
    printf("哈囉, %s!\n\n", name);
    
    return 0;
}

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:csimple.c
    功能:簡單顯示訊息的例子
    作者:張凱慶
    時間:西元2010年7月 */


我們把注意力放到函數定義區中的變數 (variable) 宣告,下圖中程式碼的第 5 行及第 6 行



程式中的變數與數學使用的變數相似,都是用某些符號或單字代替某些數值,從而得以方便計算過程。程式語言中的變數屬於識別字 (identifier) , C 語言對於識別字有一定的命名規則,例如只能用英文大小寫字母、數字以及底線符號
_
abcdefghijklm
nopqrstuvwxyz
ABCDEFGHIJKLM
NOPQRSTUVWXYZ
0123456789


其中,數字不能用作識別字的開頭,單一識別字裡不允許有空格,而如 int 、 char 為 C 語言的關鍵字 (keyword) 之一,屬於程式語言的語法保留字,因此也不能用為自行定義的名稱。通常編譯器至少能讀取名稱的前 31 個字元,但外部名稱可能只能保證前六個字元有效。


C 語言的關鍵字有 34 個,如下列表
autoelselongswitch
breakenumregistertypedef
caseexternrestrictunion
charfloatreturnunsigned
constforshortvoid
continuegotosignedvolatile
defaultifsizeofwhile
doinlinestatic
doubleintstruct


變數使用前要先進行宣告 (declaration) ,宣告的主要目的是告訴編譯器這個變數屬於哪一種資料型態,好讓編譯器預先替該變數保留足夠的記憶體空間。宣告的方式很簡單,就是型態名稱後面接空格,然後是變數的識別名稱
char a;        //變數 a 為字元型態
short b;       //變數 b 為短整數型態
int c;         //變數 c 為整數型態
long d;        //變數 d 為長整數型態
long long e;   //變數 e 為 long long 型態
float f;       //變數 f 為浮點數型態
double g;      //變數 g 為倍準浮點數型態
long double h; //變數 h 為 long double 型態


C 語言的基本資料型態可分為三大類,分別是字元 (character) 、整數 (integer) 及浮點數 (floating-point number) ,有八種,使用六個關鍵字,如下列表
識別字種類佔用位元數範圍
char字元8
short整數16-32768 to 32767
int整數16 或 32 ,實際視機器而定實際視機器而定
long整數32−2,147,483,648 to 2,147,483,647
long long整數64實際視機器而定
float浮點數32
double浮點數64
long double浮點數128


除了字元型態,整數及浮點數都有數種,主要由於不同型態佔用的記憶體空間不同,因此不同整數或浮點數型態可儲存的最大或最小值也有所不同,這樣一來,妥善規劃程式所用的資料型態可以更有效的利用記憶體空間。


宣告相同型態的多個變數也可以寫在同一列,例如簡單例子中的第 5 行
int month, day, hour, min;


第 6 行
char *name;


這是宣告字元型態的指標 (pointer) 變數,所謂的指標是 C 語言的衍生資料型態之一,用來存放指向某個變數或數值的記憶體位址。宣告指標變數,需要在變數名稱前加上星號 * 。


問題與討論
  1. 請簡述 C 語言的變數命名規則。
  2. C 語言的關鍵字可以分成哪幾類呢?
  3. 為什麼變數使用前要先進行宣告?宣告的目的是什麼?
  4. 請簡述 C 語言基本資料型態的種類。
  5. 指標變數的用途是什麼?
  6. 除了基本資料型態外, C 語言還有其他的資料型態嗎?




沒有留言: