C語言中的指標 記錄個人理解

2021-07-03 06:52:09 字數 1239 閱讀 2477

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 型...