c語言指標是乙個經常使用的變數,可是經常在二級指標**指標中搞混,指標的本質就是乙個int型的變數,只不過這個變數是記憶體塊的位址,通過在這個變數前面加星號可以間接的訪問這個記憶體塊的內容。通過下面的示例可以清晰的明白指標的本質,
#include
typedef
struct
teracher;
intget
(teracher *
*p)*p = tem;
return0;
}int
main
(int argc char
**ar**)
這個例子就是通過二級指標間接申請記憶體,我們看一下執行過程
先定義乙個t1指標,t1的內容是空的,然後呼叫get
()函式,將t1的位址賦值給p,這樣就可以通過*p來修改t1的內容,
然後在get
()函式中,定義乙個tem的指標,tem內容也是空的,
然後申請乙個teracher型別大小的空間,將首位址賦值給tem,這樣tem就儲存著剛才申請記憶體區的首位址,通過*tem就可以訪問申請的記憶體區,
然後將tem的內容賦值給*p,也就是將tem的內容賦值給t1,也相當於將剛才申請的記憶體塊首位址賦值給了t1,
這樣就相當於間接申請了記憶體給t1.然後就可以通過*t1間接修改剛才申請記憶體塊的值。
c語言複習之指標本質
程式中的白變數只是一段儲存空間的別名,那麼是不是必須通過這個別名才能使用這段儲存空間。答案 不一定,可以用指標來進行修改。可以把指標當做一種特殊變數。這段程式裡面有兩個注意點,就是 pi,指標也是有儲存位址的。還有後面sizeof 型別指標 都是一樣的,因為指標記憶體的大小所有系統的多少位決定的,就...
C語言提高03 變數本質
變數概念 既能讀又能寫的記憶體物件,稱為變數 若一旦初始化後不能修改的物件則稱為常量。變數本質 1 程式通過變數來申請和命名記憶體空間 int a 0 2 通過變數名訪問記憶體空間 一段連續 記憶體空間的別名 是乙個門牌號 3,修改變數有幾種方法?1 直接 2 間接記憶體有位址編號,拿到位址編號也可...
c語言變數儲存的本質
1 給定的值若是帶 符號 需將負數轉為補碼形式。若給定的數無符號表示 即無 號,即為補碼 負數補碼方法 除符號位外其餘位取反 反碼 再加1 反碼 1 char 1 二進位制儲存格式,變換如下 1000,0001 反碼 1111,1110 補碼 1111,1111 0xff 所以char a 1 和c...