指標是乙個變數,儲存的是另乙個變數的位址。
例如,有如下**:
int a = 3;
int *ptr = &a;//定義乙個指向整形的指標,變數前加乙個*即為乙個指標變數
可以這麼理解,定義變數a後,系統為a分配乙個大小為sizeof(int)的空間,該空間的位址存放在變數ptr中。
如果printf("%p", ptr);則列印輸出0xbfb12000。
用圖表示即為:
變數ptr=0xbfb12000, *ptr=3(0xbfb12000空間儲存的值), &ptr=ptr變數的位址
區分變數與指標變數:
int a;
float b;
double c;
char d;
char e[8];
float *f = &b;
char *g= "abcdefg";
void *h;
其中a,b,c,d,e[0]是普通變數,e是陣列的首位址,可看做是乙個指標,f,g,h都是指標變數。
變數的位址用取位址符來獲取,如&a, &b, &c, &d,&e[0](取e[0]的位址,等於e),&e[7],同樣可以&e, &f, &g, &h。
指標的值的獲取,用*,如*f則輸出變數b的值。
指標變數的型別與大小:有
int *a;
float *b;
double *c;
char *d;
void *e;
還有自定義型別,等等
不管什麼型別的指標,其所占用的空間大小是一定的,在32位機上,
sizeof(float *)=sizeof(int *)=sizeof(long *)=sizeof(long long *)=sizeof(double *)=sizeof(char *)=4位元組。
c語言 指標定義
指標 精髓 指標 位址 通過變數名訪問變數,稱為直接儲存 通過位址 指標 訪問變數,稱為間接儲存 1.定義指標變數 基型別 指標變數名 說明 基型別可以是任意資料型別 說明其後的變數名為指標變數名 指標變數名是任意合法的識別符號 例如int pointer 1 2.指標變數賦值 1 先定義後賦值 i...
C語言 指標1
指標恐怕是c語言中最不容易掌握的乙個概念了,但指標又是如此的重要,可以說不會指標,c語言就等於沒學。指標到底是乙個什麼東西呢?include int main char pch null char pstr hello pointer short pshort null int pint null ...
C語言指標1
陣列與指標 陣列的名字是第一元素的位址。include int main printf str 0 的位址是 p n str 0 輸出 str 0 的位址是 000000000062fdc0陣列相鄰每一元素之間相差值 資料型別的寬度 include int main float b 3 double...