C語言 指標入門

2021-08-20 06:51:36 字數 1491 閱讀 9630

指標是乙個用來指示乙個記憶體位址的計算機語言的變數或**處理器中的暫存器。簡單來說,指標  ==『位址』。

指標是一種變數,也有資料型別和相應的位址。

1.指標變數的定義

定義普通變數格式為:資料型別 變數名;指標變數定義如下:

int *p1;//定義了乙個整型指標變數p1

char *p2;//定義了乙個字元型指標變數p2

double *p3;//定義了乙個浮點型指標變數p3

這裡引出了乙個新的符號「*」,指標運算子 "*" 是乙個單目運算子,通常稱為間接訪問運算子或解引用運算子。「*」的作用是跳到指標所指向的變數,簡稱解引用。指標變數只比普通變數多乙個解引用。

2.指標的賦值

符號「&」是取位址符,就是取變數的位址。

int a = 10;//整型變數存放整型值

double b = 23.4;//浮點變數存放浮點值

int *p = &a;//定義乙個整形位址(指標)變數p存放為a的位址即p=1000(假設a的位址為1000)

3.指標的使用

int a = 10;

int b = 20;

int *p = &a;

*p = 100;//a = 100

p = &b;

*p = 200;//b = 200

int **pp = &p;//a -> &a:int -> int *; p -> &p:int * -> int **

//int **p2 = &&a; error

*pp = &a;//p = &a;(*pp = p)

**pp = 1000;//a = 1000;

4.關鍵點

(1)以下三個是不同的操作,賦值操作與使用操作不用。

int *p;定義乙個整型指標型別的變數p

p=&a;//賦值操作,將a的位址賦值給p

*p=20;//使用p,借用p來訪問a,對a的值進行修改

(2)二級指標

int *p;

int **pp=&p;//定義二級整型指標變數**pp,並用p的位址對其賦值。**pp即指向p。

//只能對指標取二級位址,不能對常量取二級位址。如 int **p2 = &&a 錯誤 

*pp = &a;//p = &a;(*pp = p) 

**pp = 1000;//a = 1000 

int a = 10;

char b = 20;

int *p = &a;

p = &b;//int * = char * //error 

//p = 1000;//error  

(4)指標的大小:不管為幾級指標,32位平台(x86)佔4個位元組,64位平台(x64)佔8個位元組

C語言 指標入門

在我年輕的時候,我三次鼓起勇氣學習c,三次都倒在了指標上 雖然很清楚指標是一種存放位址的變數,但是他具體是乙個什麼意思呢?我把整個空間看成乙個 n 1 維的空間。n 是資料型別,可能是int,char,double,等等。1 是位址。把位址看成一根數軸。舉個粒子 int pa int a 5 pa ...

C語言入門之 指標

存放位址的變數稱為指標變數。指標變數是一種特殊的變數,它不同於一般的變數,一般變數存放的是資料本身,而指標變數存放的是資料的位址。假設在程式中宣告了1個int型的變數a,其值為68。系統為變數a分配的首位址為0x65fdf4h,p a是存放變數a位址的指標變數,即p a中存放的值為0x065fdf4...

C語言指標入門(二)

指標 1.指標是什麼?起什麼作用?指標是變數的一種,裡面是乙個位址,通過這個位址找到要找的資料 2.指標運算子 是取位址的運算子,是表示指標運算子 例 int p1,a p1 a p1 3 例題 include int main int p int a 3 p a printf d p 輸出結果 3...