C語言的一級指標和二級指標理解心得

2021-09-21 06:24:54 字數 1097 閱讀 7708

我們在學習c的時候應該會聽到這樣的一句話,不學指標等於白學c,指標是c的靈魂。指標其實是乙個整形變數,與其它資料不同的是,它的作用是用來儲存其它變數的位址。指標(pointer)是程式語言中的乙個物件,利用位址,它的值直接指向(points to)存在電腦儲存器中另乙個地方的值。由於通過位址能找到所需的變數單元,可以說,位址指向該變數單元。

我們先來了解下一級指標,比如下面例子,b為指標變數,b存放的是a的位址,*b等於a的值,但是既然b存放的是a的位址,那麼就有實際的空間,這個空間也就有位址。正如列印的結果,a的位址等於b的值(0019ff2c),b的位址卻是 0019ff28,這個位址空間存放的值就是a的位址。通過改變指標*b的值我們就可以

#include #include int main(void)

執行:a的值為: 100

*b的值為: 100

b的值為: 0019ff2c

press any key to continue

二級指標就是為了獲取這個位址,一級指標所關聯的是其值(乙個位址)名下空間裡的資料,這個資料可以是任意型別並做任意用途,但二級指標所關聯的資料只有乙個型別乙個用途,就是位址,指標就是兩個用途提供目標的讀取或改寫, 那麼二級指標就是為了提供對於記憶體位址的讀取或改寫,我們可以看到fun1函式並沒有改變b指標存放的位址,而fun2改變了b的指向("this is fun2"),因為fun1函式的形參傳入實際上是複製實參b的位址給temp,就像int a =1;b = a; b = 2;此時b為2,但是a還是1,道理是差不多的,我們改變的是temp的指向,temp本質上是乙個變數,存放的是b指向的位址,因此想要改變一級指標b就要引入二級指標,fun2函式的形參temp存放的是b的位址,*temp即為引用b,改變*temp即改變b的指向。

#include #include void fun1(char *temp)

void fun2(char **temp)

int main(void)

執行:b為: hello

b(fun1)為 hello

b(fun2)為 this is fun2

press any key to continue

對於一級指標和二級指標理解

一級指標 include void print int p int main 執行結果 通過一級指標可以修改實參的值。實參就是在呼叫函式時傳給函式的引數,形參是實參的乙份臨時的拷貝,在被呼叫的函式中雖然值和實參的值一樣,分配的記憶體和實參不一致,函式呼叫開始時,形參被分配記憶體。隨著被呼叫函式執行結...

一級指標和二級指標

通常用作函式的輸入引數,因為一級指標作為函式引數,在呼叫的時候,實參和形參是不同的記憶體空間,只是,這個記憶體空間存放的指標指向的是同一塊位址,所以形參在函式執行中可以訪問實參指向的記憶體空間,但是形參的指向的改變並不能影響實參。總結一句話 一級指標做函式引數,在函式內做形參做重新指向並 不會影響實...

一級指標二級指標

例如 int p null int代表指標p指向的資料型別是int型,代表這是乙個指標變數,1 指標變數儲存的內容是指向的變數的位址 2 在使用sizeof判斷指標的位元組數時,在32位機器上為4個位元組,在64位機器上為了相容,仍然是四個位元組大小 3 小知識點,不同型別的指標除了指向的變數資料型...