對C語言指標的理解

2021-10-19 08:58:33 字數 1216 閱讀 7989

c語言中有很多變數,比如說我們常見的int,float變數,而指標變數也是一種變數,不過不一樣的是,指標變數裡面存放的是位址。

假設下面的是計算機的記憶體,每乙個小格格代表乙個位元組(1byte),一位元組等於8個位元位(1byte=8bit,能存放8位二進位制數)。

在c語言中,int佔4個位元組,char佔1個位元組。我們可以把這乙個小格格想成是乙個個小房間,我們根據住進去的人數分配房間,比如說一大家子人需要五個房間,如果就乙個人住乙個房間就夠了,如果乙個人住五個房間就會造成空間的浪費,這也是設定不同變數的意義。

在指標運算中主要用到兩個運算子,乙個是&,叫做位址符,乙個是*,稱為間接運算子。&用來獲取變數的位址,*用來獲得位址的對應的值。前面說到,可以講小格格看成乙個個小房間,那位址就可以看作是這些房間的門牌號,我們可以通過門牌號找到裡面住的小朋友。

舉個例子:

int a =7;

int b =*(

&a)

int a;

char b;

生成指標型別的變數的格式是:

int

* a;

char

* b;

即將放在int後或者變數前。

為什麼位址型別還要分為int型位址,或者char型位址呢,門牌號不應該都是一樣的嗎?我們可以這樣想,因為不同的房子大小不一樣,有的門牌號是四個人住的房子,有的是乙個人住的房子,所以通過int a;char* b;就可以知道該位址指向的變數所佔的位元組數是多少。

;那&b代表什麼意思呢?我們知道,b存放了a的位址,&b就是存放a這個變數位址的位址。可以這樣理解,&b這個門牌號裡的房子,裡面放著a的門牌號,我們可以通過&b的門牌號,進去之後得到b的值,即a的門牌號,然後可以通過a的門牌號,進去a得到變數的值。

對C語言指標的理解

之前,剛剛學習c語言的時候,學習其它資料型別的時候,感覺很好理解,但是學到指標的時候,筆者就蒙蔽了,因為看到課本上的文字,雲裡霧裡的,什麼指標,什麼指標變數,對於筆者來說都是傻傻分不清,感覺指標和指標變數好像一樣,或者試圖去背下來,但是老是搞混。那時候不知道,我的心思是在忙於社團工作,還是在哪個漂亮...

對C語言中指標的入門理解

當指標p的值為物件x的位址時,我們一般會說 p指向x 接著進行 xiaohong xiaoli 的複製,我們就可以得出 小紅喜歡小李 xiaolin xiaohong的資料型別是 指向int型變數的指標型 xiaolin xiaozhang xiaohong xiaowang 從以上賦值語句也可以發...

C語言指標的理解

什麼是指標?指標也是一種變數,存放的是某塊記憶體的位址。我們知道,記憶體可以理解為是按位元組被分割成若干塊的,每一位元組都對應著乙個編號,並且這些編號從小到大依次排列,這個編號就是它的位址,獨一無二,而指標變數中的值就是這些編號 例如如下 的結果 include include int main 這...