下面通過交換兩個數的值的例子比較,程式**在最下面,加深對指標變數的理解
swap1函式
①main主函式a的值3,b的值5傳遞到是swap1,
swap1的區域性變數p, q雖然在做值3和5 的交換,
可是一旦交換完畢,區域性變數p和q所占用的記憶體空間會釋放掉。
②主函式main中的a, b仍然沒有被改變。
swap2函式
①main函式中a和b的位址分別傳遞給p, q.
swap2做的是兩個位址值的傳遞,被新賦給的兩個位址值交換,
但是無法將main程式中a的位址更換為b的位址,
b的位址更換為a的位址。任何程式都無法做到
②所以a的值沒有變,b的值沒有變
swap3函式
①main函式中a和b的位址分別傳遞給p, q.
此時*p將完全相當於a, 因為p的位址是a的記憶體位址,
*在這裡是&的你運算,這樣*q就完全等同與b
在swap3中交換*p和*q就完全等同於交換main函式中的a和b.
①一旦乙個指標變數被賦予了某個普通變數的記憶體位址,指標變數就指向了這個普通變數②這個指標變數指向了這個普通變數,則修改指標變數,不影響該普通變數
同樣這個時候修改普通變數也不影響指標變數。
③*指標變數完全等同於該普通變數。
④另外需要說明的是變數的本質就是記憶體
⑤普通變數(相對與指標變數而言,即非指標變數)一旦被定義,其記憶體位址無法被改變,如main函式中的a, b
#include
void swap1(int p, int
q)void swap2(int * p, int * q)
void swap3(int * p, int * q)
int main()
學習C語言指標
先看個程式,是華為2005年招聘筆試題之一 include main int p,q p a q a 2 printf a p q d n q d n p d n q p d n a q p q,p,q p getch 執行結果 a q p 3 q 42 p 46 q p 2 6.3 指標的運算 指...
c語言 指標學習
最近重翻了c語言程式設計這本書,有了一些新的感觸,這本書從資料型別 運算子和表示式 迴圈和選擇結構 輸入輸出 陣列 指標 字串 函式 構造體和檔案操作等方面來深入淺出的介紹c語言。當然最令人印象深刻的是指標。指標是存放著變數的位址的變數的資料型別,換言之,指標變數儲存的是變數的位址值,由於指標可以直...
C語言指標學習
一 明確幾個符號 1 取位址符,取值符 1 char a 別用cha a null,容易引起歧義 例如char a b 其實是定義指標a,和char型變數b。定義多個指標用 char a null,b null 2 定義指標時初始化 因為指標a到底指向 我們不知道。隨便改變這個位址的值,可能導致一些...