指標是乙個用來指示乙個記憶體位址的計算機語言的變數或**處理器中的暫存器。簡單來說,指標 ==『位址』。
指標是一種變數,也有資料型別和相應的位址。
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...