1、直接使用指標的表示式,表示使用指標代表的記憶體位址. (指標存放的資料為記憶體位址,如同int型變數存放的資料為整數)示例:2、在指標表示式前加上符號:*,表示使用指標指向的值,也就是指標所代表的記憶體位址中儲存的值. (
*
也叫取值運算子或間接運算子,與之對應&
為位址運算子,放於正常變數之前可獲得變數在記憶體中的位址,也就是獲得乙個指向這個變數的指標)3、指標也有資料型別
int foo1=10;
int*foo2;
foo2=&foo1;
printf("*foo2:%d\n",*foo2);
printf("foo2:%d\n",foo2);
*foo2=11;
printf("*foo2:%d\n",*foo2);
printf("foo2:%d\n",foo2);
執行結果:
*foo2
:10foo2
:559162276
*foo2
:11foo2
:559162276
解釋:
第一行,宣告乙個整型的變數foo1,其值為10
第二行,宣告乙個指標foo2,宣告指標要使用*
符號
第三行,獲取變數foo1的記憶體位址,獲取變數的位址要使用&
符號,並將記憶體位址賦給指標foo2,也就是讓foo2代表(指向)foo1的值在記憶體中的儲存位置
第四行,輸出*foo2
,也就是輸出指標foo2所代表的記憶體位址中儲存的值
第五行,輸出foo2
,也就是輸出指標foo2所代表的記憶體位址
第六行,讓指標foo2所代表的記憶體位址中儲存的值,變為11(注意這裡並沒有修改指標foo2所代表的記憶體位址)
第七行,輸出*foo2
,也就是輸出指標foo2所代表的記憶體位址中儲存的值
第八行,輸出foo2
,也就是輸出指標foo2所代表的記憶體位址
注意執行結果,foo2所代表的記憶體位址中的值,通過*foo2=11;
被修改後其記憶體位址並未發生改變,只是改變了該記憶體位址中儲存的值,而指標foo2依然代表原來的記憶體位址
《如有錯誤請指出》
個人c語言中指標的理解
定義指標 int p int i p i p是指向i位址的指標 p 10 指的是i的值變成了10指標在使用前一定要賦值 確定指標指向 為指標變數賦的值必須是乙個位址 將指標變數初始化為空指標,意為該變數不指向任何值 int ptr null 將變數位址賦值給指標 int a int p a 或者 i...
C語言中陣列指標的理解
留個標記,以防自己忘掉 在 c陷阱與缺陷 這本書中說道 c語言中的陣列值得注意的地方有以下兩點 1.c語言中只有一維陣列,而且陣列的大小必須在編譯期就作為乙個常數確定下來。然而,c語言中陣列的元素可以是任何型別的物件,當然也可以是另外乙個陣列。這樣,要 出來乙個多維陣列就不是一件難事。2.對於乙個陣...
C語言中空指標的理解
空指標實質上是有指向的指標,但它指向的位址是很小的位址 它在標頭檔案stdio.h中,這樣定義的 define null void 0 顯然,這是乙個巨集定義。null 實際上是 void 0 容易看出,外層的括號純粹是為了防止歧義 裡層的括號則是強制型別轉換,轉換成void 型別,本來void 型...