至此,讀者應該已經能夠分辨變數和常數的分別。 注意,以
#define SIZE 25這種方式定義的 SIZE 並不是變數,而是代表 25 的常數。 我們又稱它為符號常數 (symbolic constant)。 凡是 C 語言中的變數,都在電腦的記憶體中佔有空間, 而那個空間裡面儲存著變數的數值。 例如,當我們說
則這四個變數 t i x y 各自在電腦的記憶體中佔有空間。 而且我們要提示以下幾個常見的基本原則:char t; int i; float x; double y;
C 語言提供我們一個機制,使得程式設計者可以得知變數所在的記憶體位置。 那就是透過 & 這個運算符號,它的名字是 address-of。 例如 &t 就代表 t 所佔用的那個字元的地址編號, 而 &i、&x、&y 分別代表 i、x、y 所佔用的字元中,第一個字元的地址編號。 因為我們知道資料型態的含量,又知道變數一定佔用連號的字元, 所以只要知道第一個字元的地址編號,當然就知道了所有佔用字元的地址編號。 以下這個小程式,就測試 & 的用法。
#include <stdio.h> /* 測試 address-of 運算 (test-address.c) */ main() { char t='a'; int i=0; float x=1; double y=2; printf("t at %u, i at %u, x at %u, y at %u\n", &t, &i, &x, &y); }
t at 4026530503, i at 4026530496, x at 4026530492, y at 4026530480因此,
讀者如果做了實驗,或許會發現每次執行這個實驗的結果都一樣。 即使是在多人多工的 UNIX 系統中,也會如此。 這似乎有點不合直覺。 這個現象關係到作業系統的設計,使得每個使用者的每個操作介面,
習題
注意:此處所有文件均為原著,個別的版權宣告日後會一一公布, 整體版面設計亦尚未完成。但仍請勿抄襲文字與圖片,以免觸犯著作權法。
Created: Feb 23, 2001
Last Revised: Feb 23, 2001
© Copyright 2001 Wei-Chang Shann 單維彰