C語言指針

變量的 直接訪問 方式

     按變量的地址(變量名/變量的外號) 存取變量的值數組

image

變量的 間接訪問 方式

     將變量的地址放在另外一個內存單元中,先到另外一個內存單元中取得變量的地址,再由變量的地址找到變量並進行數據存取ide

 

image 

image

變量Pointer是一個指針變量(自己是一個變量),它存儲的是另外一個變量的內存地址(i的內存地址),咱們說pointer指向i指針

一個變量存儲了另外一個變量的內存地址,咱們說它指向i(另外一個變量)blog

什麼是指針

指針的概念:一個變量的地址稱爲該變量的指針內存

指針變量:專門用於存儲其它變量地址的變量it

指針與指針變量的區別,就是變量值與變量的區別class

image

指針變量的三要素變量

  • 指針變量的類型 :和其所指變量的類型一致
  • 指針變量的值:另外一個變量在內存的地址
  • 指針變量的名字:起法同普通變量

指針變量的賦值:

float *p1=p1的地址float

方式一:指針變量名 =&變量名; &->取地址符im

方式二:經過另外一個指針變量賦值

int i ,*p1,*p2; //聲明一個變量i,指針p1和指針p2

賦值方式一:p1=&i

賦值方式二:p2=p1

image

指針的運算

一、算術運算

例如:int *p,i;

char *q,c;

p=&i;

q=&c;

內存地址示意義以下:

image

int 型佔據 2個字節,char型佔據1個字節

求: p++ ,q++

p++ 即 i的地址移1位(2個字節)

image

q++,即c的地址移動1位(1個字節)

image

二、比較運算

數組的名稱就是一個指針

image

三、兩個運算符

*:求其後內存地址中的內容

&:求變量的內存地址

image 

image

pointer_1指向a,pointer_2指向b

 

-----------------------  分割線 ---------------------

image

練習

問:若已執行了 pointer_1=&a,則:&*pointer_1的含義是什麼?

答:pointer_1=&a ,這時pinter_1存儲的是 a的地址,

*pinter_1 是取指針所指向的值,也即 a

因此 &*pinter_1 就是取 a的地址,至關於 &a

*取內容,&取地址,二者是互異的,互相抵消

問:*&a的含義是什麼?

答:&a取的是地址,*地址取的是內容,因此*&a 就是a

問:(*pinter_1)++至關於什麼?

答:*pointer_1 是取pointer_1所指向的值,因此這裏至關於 a++

相關文章
相關標籤/搜索