指標變數p的值是001bfd18,而*號的作用是取值,*p即取位址001bfd18中存放的值
其實p中存放的是位址,只是當cout時,如果指標是字元型指標,那麼會輸出p中位址指向的記憶體中的內容(這裡是h)直到遇到』\0』才結束。所以直接輸出p時會輸出hello,而將p強制轉換為void *時輸出的是位址。
從上圖可以看出point指標中存放的是p指標的位址,而p指標中存放的是a[0]的位址。所以*point和p是一樣的,前者是取point指標中存放的位址(0025f754)中的值,即取位址0025f754中存放的值(0025f760),而後者就是0025f760,所以兩者是等價的。**point和a[0]是等價的,前者可以寫成*p,*p是取p中存放的位址(0025f760)中的值,即位址0025f760中存放的值1。由上可以得出*point等於p, **point 等於 a[0]。
由上圖可以看出a[0]中存放著』w』的位址,a[1]中存放著』t』的位址,a[2]中存放著』c』的位址,只是這些位址都是指向字元型的,所以直接cout的會輸出字串,而指標p中存放著a[0]的位址,所以*p等於a[0],都是獲得』w』的位址,即00a778ccc,而**p和a[0][0]等價都獲得了位址00a778ccc中存放的值w。由上圖我們可以看到字元位址相隔1個位元組,而指標位址相隔4個位元組,這樣就便於++運算,獲得下乙個位址了,列如++p後,p就指向a[1],p中存放的是a[1]的位址。
與一般變數一樣,可以使乙個指標變數指向結構體,從而形成結構體指標變數。其值是所指向的結構體變數的首位址。通過結構體指標即可訪問該結構體變數,這與陣列指標和函式指標的情況是相同的。結構體指標變數宣告的一般形式為:
C C 空指標總結
在c中,使用null表示空指標,實際上,null被定義為 define null void 0 其中 void 0 表示對 0 進行強制轉換,轉換為乙個void型別的指標,用於表示空指標。即null表示乙個指向位址 0 的void指標,將null賦予其他型別的指標時,會進行乙個隱式轉換,將void型...
C C 函式指標總結
函式指標指向某種特定型別,函式的型別由其引數及返回型別共同決定,與函式名無關。舉例如下 int add int nleft,int nright 函式定義該函式型別為int int,int 要想宣告乙個指向該類函式的指標,只需用指標替換函式名即可 int pf int int 未初始化則pf可指向i...
重學c c 之指標
一 什麼是指標?指標是用來存放變數位址的,可以直接訪問操作記憶體。二 指標的定義和使用 指標變數定義語法 資料型別 變數名 第一種 int p int a 3 p a 第二種 int a 3 int p a 三 指標所佔的記憶體空間 64位 cout sizeof int sizeof double...