指標小議(初學版)

2021-08-29 05:02:44 字數 1535 閱讀 8797

指標,是c語言的精華。顧名思義,它可以指向乙個東西。我在剛剛初識指標時就想象到了鐘錶上的「指標」。通過它的箭頭,就可以看出時間。也可以形象地理解為「鐘錶表盤上的指標指向了某個數字,從而得知具體時刻。」舉個通俗的例子吧,我住在101號房間,這個「101」就好比指標,「我」就是這個指標所指向的內容。若聯想到計算機的記憶體方面,指標就是一塊記憶體單元的位址。這個位址需要儲存在乙個變數裡,這個變數就成為「指標變數」,而這塊記憶體單元裡的變數值,就是指標變數所指向的值。

在電腦科學中,指標(pointer)是程式語言中的乙個物件,利用位址,它的值直接指向(points to)存在電腦儲存器中另乙個地方的值。由於通過位址能找到所需的變數單元,可以說,位址指向該變數單元。因此,將位址形象化的稱為「指標」。意思是通過它能找到以它為位址的記憶體單元。

指標是個變數,存放記憶體單元的位址(編號)。

對應到**:

#include

intmain()

總結:指標就是變數,用來存放位址的變數(存放在指標中的值都被當做位址來處理)。

那麼問題來了:

1.乙個小的記憶體單元到底是多大呢?(1byte)

2.記憶體是如何編址呢?

對於32位的機器,假設有32根位址線,那麼32根位址線產生的位址就會是:

00000000 00000000 00000000 00000001 ~11111111 11111111 11111111 11111111

這裡就會有2^32個位址。

(2^32 bit == 2^32 / 8 byte == 2^32 / 1024 kb == 2^32 /1024 /1024 mb == 2^32/1024/1024/1024 gb == 4gb) 我們就可以給4g的空閒空間進行編址。

指標變數的型別

char

* pc =

null

;int

* pi =

null

;short

* ps =

null

;long

* pl =

null

;float

* pf =

null

;double

* pd =

null

;

總結:指標變數的型別決定了對指標解引用時能有多大的許可權(能操作幾個位元組)。比如:char* 的指標解引用就只能訪問乙個位元組,而int* 的指標解引用就能訪問四個位元組。

有關指標的應用小例項:

函式指標初學

氣泡排序可否只用乙個函式實現公升序與降序排列 答案是肯定的 void bubblesort int a,int n,int compare int,int 宣告排序函式,通過函式指標作為函式呼叫 int compare int int 即為函式指標 函式在編譯時被分配給乙個入口位址。函式名就是這個函...

小議C語言中的陣列和指標

1.引言 在c語言中,陣列和指標是其中非常重要又聯絡緊密的兩種資料型別,同時也是重點難點集中的地方。在學習這些內容時,經常會碰到這樣一些問題,例如 陣列名是什麼,就是首位址嗎?陣列如何訪問元素?陣列為什麼不能進行越界檢查?陣列表示法和指標表示法有何關係,誰更好?正確理解這些問題,對指標和陣列的使用是...

初學指標的理解

指標和引用的區別 他們都是指位址,並且個人覺得引用是一種 特殊 的位址。他的特殊之處是引用一旦繫結 指向 了某個物件 資料 之後就與這個物件 資料 建立了永久的關聯,直到引用自身滅亡。因為如此所以引用不能操作自身的位址,而指標卻可以。舉例來說 int number1 100 int p p numb...