C語言學習筆記 指標

2021-08-29 05:17:40 字數 2232 閱讀 4905

若觸過組合語言,那麼理解學習c語言中指標就很簡單了。指標,在彙編裡面的表現形式,無非就是定址,直接定址和間接定址。

先來學習下,  c語言中的4大類資料型別:

基本型別:int,long,float,char

構造型別:陣列,結構體-struct,聯合體-union, 列舉型別-enum

指標型別:int*, long*, float*, char* 等等

空型別 :void

如上,指標是一種資料型別,如同整數型有int,long,float,short ,

指標型下面也有int*,long*,float*, char*, struct* 等等。

舉例說明:定義乙個int型指標。

int a=12345;        //定義了乙個整型變數a,同時給a賦值12345

int* pa=&a;        //定義了乙個指標名叫pa,它指向的是乙個整數a。也可叫pa是個整型的指標。

//對int 後面加個*,就表示這個變數pa,不是int整型了,而是整型指標了。

&a表示取到變數a的位址, 這個位址一般是乙個32位的資料,位址內放的值是12345。

int* pa=&a;  表示把變數a的位址當做資料,賦值給變數pa。

這裡需要理解變數位址和位址存的資料(變數的值),這兩個概念。

位址就好比你家的位址,買東西要填寫的收穫位址;

位址內的資料就好比你家的房子;

仔細看下面的**:

我這裡顯示變數a的位址是0x0019 fedc ,位址值應該是4位元組的,前面兩00可以省略不顯示的。

從上面的例子可以看到,指標變數pa位址內的存放的是 整型變數a的位址,也可以說變數pa的值是 變數a的位址。

而常說的-指標變數pa指向的值,在這裡就是變數a的值=12345;  *pa 就是取值的意思,程式執行*pa的操作是,選取到pa記憶體的值,然後把這個值當做"位址",在去取這個「位址」內存放的值。

這時,老闆說,客戶公司的位址我寫在我的筆記本上,但筆記本放在了我家裡。 我這裡給你個紙條,上面是我家的位址,你先到我家,拿到筆記本,看上面客戶的公司位址,在去客戶公司,把材料拿回來。

下面例子:指標的指標 int** p

int a = 12345;        //定義個整數

int* pa=&a;    //定義乙個指標(整數型的),也叫乙個指向整數的指標,也叫整數指標。

int** ppa;    //乙個指標,它指向的是"另外乙個指標",另外乙個指標指向的是乙個整數。

// 解釋:* 表示ppa 是個指標,  int* 乙個值想整數的指標

ppa = &pa;  //ppa的值是 整型指標變數pa的位址。

printf("變數a的位址=0x%x \n",&a);

printf("變數a的值=%d \n",a);

printf("變數pa的位址=0x%x \n",&pa);

printf("變數pa位址記憶體的是=0x%x \n",pa);

printf("變數pa是個整型指標,它指向的值=%d \n", *pa);

printf("指標的指標ppa位址記憶體的值是=0x%x \n", ppa);    //變數pa的位址

printf("*ppa=0x%x \n", *ppa);                            //變數a的位址

printf("指標的指標ppa最終指向的值是=%d \n", **ppa); //變數a的值

//只要高興,還可以跟多層的指標,暫時覺得沒毛用

int*** pppa;

int**** ppppa;

int aa[10] = ;  //定義了乙個陣列,裡面放了10個整數,aa也可叫整型陣列

int* bb[10]; //宣告了乙個陣列叫bb,長度10.裡面放的資料是整數指標。

bb[0] = pa;  //bb[0] 是陣列bb的第1個資料,它是整型指標。

//可以理解為 int* bb[0], bb[0] 是個變數名, 對比 int* pa. 

//所以可以有 bb[0]=pa;

printf("變數a的位址=0x%x \n",&a);

C語言學習筆記 指標

c語言要玩的好,指標是核心,但是指標在學習的時候看教程往往感覺一看就明白,但是實際用的時候一用就錯,而且還不知道錯在哪。為了更加深刻的了解指標,將學習過程記錄下來,依次加深對指標的理解。先看看一段測試 void fun void int main void 定義乙個變數a,值為100,然後定義乙個一...

C語言學習筆記 指標

get新知識 1 指向二維陣列的指標,如指向int a 3 4 的指標int p 4 p指的是第0行第乙個位址 注意是位址 p 1 指的是第1行第乙個位址,以此類推 p i j 表示第i行第j列的元素。二維陣列本質也是一維陣列。每一行相當於乙個元素。2 指向函式的指標 作用 可以作為另乙個函式的引數...

C語言學習 指標 筆記

1 c程式設計中使用指標的好處 2 記憶體中每個位元組都有自己唯一的編號 記憶體位址 3 儲存單元 記憶體位址及指標 4 指標變數 4.1 變數的指標和指向變數的指標變數 其中,用 表示指標變數所指向的物件。如 指標變數pa指向變數a。則 pa就表示pa的物件,即變數a。此時 pa與a為同乙個變數 ...