哈嘍C 《指標》之變數值的訪問

2021-09-10 05:59:23 字數 829 閱讀 5270

系統執行"scanf("%d",&num);「和"printf(「num=%d\n」, num);「時,訪問變數num值的方式可以有兩種:

(1)直接訪問

1)上例中scanf(」%d」,&num)的執行過程是這樣的:

用變數名num作為索引值,檢索符號表,找到變數num的起始位址3000;然後將鍵盤輸入的值(假設為3)送到記憶體單元3000和3001中。此時,變數num在記憶體中的位址和值,如圖9-1所示。

2)printf(「num=%d\n」,num)的執行過程,與scanf()很相似:

首先找到變數num的起始位址3000,然後從3000和3001中取出其值,最後將它輸出。

(2)間接訪問

c語言規定:在程式中可以定義一種特殊的變數(稱為指標變數),用來存放其它變數的位址。

例如,假設定義了這樣乙個指標變數num_pointer,它被分配到4000、4001單元,其值可通過賦值語句"num_pointer=#"得到。此時,指標變數num_pointer的值就是變數num在記憶體中的起始位址3000,如圖9-1所示。

通過指標變數num_pointer訪問變數num值的過程如下:

首先找到指標變數num_pointer的位址(4000),取出其值3000(正好是變數num 的起始位址); 然後從3000、3001中取出變數num的值(3)。

(3)兩種訪問方式的比較

兩種訪問方式之間的關係,可以用某人甲(系統)要找某人乙(變數)來模擬。

一種情況是,甲知道乙在何處,直接去找就是(即直接訪問)。

另一種情況是,甲不知道乙在哪,但丙(指標變數)知道,此時甲可以這麼做:先找丙,從丙處獲得乙的去向,然後再找乙(即間接訪問)。

哈嘍C 《指標》行指標變數和列指標變數

行指標變數 指向由n個元素組成的一維陣列的指標變數 1 定義格式 資料型別 指標變數 n 注意 指標變數 外的括號不能缺,否則成了指標陣列 陣列的每個元素都是乙個指標 指標陣列 本章第6節介紹 2 賦值 行指標變數 2維陣列名 行指標變數 案例 使用行指標和列指標兩種方式輸出2維陣列的任一元素。1 ...

哈嘍C 《指標》字元指標變數和字元陣列的比較

雖然用字元指標變數和字元陣列都能實現字串的儲存和處理,但二者是有區別的,不能混為一談。1 儲存內容不同。字元指標變數中儲存的是字串的首位址,而字元陣列中儲存的是字串本身 陣列的每個元素存放乙個字元 2 賦值方式不同。對字元指標變數,可採用下面的賦值語句賦值 char pointer pointer ...

C 使用事件監控變數值的改變

publicclassprogram 02 10set 11 17myvalue value 18 19 20 21 定義的委託 22publicdelegatevoidmyvaluechanged objectsender,eventargs e 23 與委託相關聯的事件 24publiceven...