引用指標變數所指向的變數
訪問變數的兩種方法:
指標變數的相關運算
指標綜合應用
我們都知道,任何變數在記憶體中都會開闢相應的儲存空間來儲存這些變數,但在使用者編寫c程式時,並不知道該變數具體的儲存位址,因此指標便應運而生,成為了c語言的靈魂。
int x;
&x;//取變數x的位址
因為x宣告為「int」型別的變數,記憶體會分配兩個儲存單元,那麼當取位址的時候,會將為『x』分配的第乙個儲存單元的位址返回,假如為『x『分配的儲存單元為0x0002、0x0003,&x的值將為0x0002。
如下圖:
其中p=&x;語句是將x變數的位址存入p中,既然用到了變數p,就必須對p變數進行定義宣告,由於p是存位址的變數,為了與以前地基礎變數加以區別,故宣告為"p",將其宣告為「int」型別後,在訪問p時就應該從其首位址開始向下訪問2個儲存單元,故*p=12;*是向p指向的x變數中存入12。
int x,
*p=&x;
int x,
*p;p=
&x;
int x;
float *p=
&x;//指標變數型別與基變數型別不一致
int x,
*p;p=
1000
;//指標變數不能賦立即數;
用「 *指標變數名」來表示引用該指標變數間接訪問的變數,如下圖:
上圖與x=12;的作用相同。
1.直接通過該變數名直接訪問該變數
2.通過指向變數位址的指標變數間接訪問該變數
指標變數加或減乙個整數就是將指標指向的當前位置向前或向後移動n個偏移量(n*sizeof(基型別))。
例如:
int *pa,a;
pa=&a;
pa=pa+2;
//即pa指向a的首位址+4
兩個指標變數相減,即為兩個指標指向的位址相減除以基變數的型別,如下圖:
而p1+p2沒有實際意義。
int *pi;
//整型指標變數
char *pc;
//字元型指標變數
float *pf;
//浮點型指標變數
struct stu *ps;
//結構體指標變數
int(
*qi)[5
];//整型陣列指標
char *qc[5]
;//字元型指標陣列
float
(*qf)()
;//浮點型函式指標
struct stu *qs(
);//結構體指標函式
特別地,指標還可以作為函式的引數,達到引用傳遞的效果 c語言複習之指標本質
程式中的白變數只是一段儲存空間的別名,那麼是不是必須通過這個別名才能使用這段儲存空間。答案 不一定,可以用指標來進行修改。可以把指標當做一種特殊變數。這段程式裡面有兩個注意點,就是 pi,指標也是有儲存位址的。還有後面sizeof 型別指標 都是一樣的,因為指標記憶體的大小所有系統的多少位決定的,就...
C語言複習 指標
程式設計練習 1.用指標實現報數問題 用指標的方法解決3人報數問題 include int main i k m 0 i是陣列計數,k是迴圈3次計數,m是退出的人計數 while m n 1 n是總人數,退出的人數要比總人數少乙個人結束迴圈 if k 3 i if i n 如果i到了成員最後,返回最...
c語言複習 指標
注 本文是對蘇小紅版c語言教材第9章的筆記 間接定址運算子 解引用運算子 e.g.int pa a 用於指標變數的定義 int a 0 printf a is d,a is p,pa is p,pa is d a,a,pa,pa 用於讀取指標變數儲存的位址對應的變數的值輸出結果 a與pa相同,a與p...