標籤:指標 c語言 地址
(1)指標就是地址
首先明確一個觀點:指標就是地址。這是理解指標的起始一步。
直觀感受下,變數的地址
int main(){int foo;int *foo_p;foo = 5;foo_p = &foo;printf(" foo...%d\n", foo);printf("*foo_p...%d\n", *foo_p);printf(" &foo...%p\n", &foo);printf(" foo_p...%p\n", foo_p);printf("&foo_p...%p\n", &foo_p);return 0;}
運行
幾點說明:
- %p中的p是pointer(指標)的意思,專門用於列印指標變數中的內容。
- 有時看到用%x列印指標的,雖然結果一樣,但含義完全不同。%p:用合適的方式(一般是十六進位)輸出指標變數中存放的另一個變數的地址;%x:用十六進位的方式列印出變數的值。並且在我的環境中使用%x列印指標變數的話,會省略前面的0。
指標變數的
左上方是變數名,右上方是變數地址,中間是變數儲存的內容。
看看在我的環境中各基本類型分配的記憶體大小
int main(){printf("sizeof(char)...%d\n", sizeof(char));printf("sizeof(int)...%d\n", sizeof(int));printf("sizeof(float)...%d\n", sizeof(float));printf("sizeof(double)...%d\n", sizeof(double));printf("sizeof(int*)...%d\n", sizeof(int*));return 0;}
在我的環境中,指標類型分配的大小是 sizeof(int*)=4;也就是說用4個位元組的大小來儲存變數的地址,這也是目前大多數環境下的結果。以後討論基於這個結果。至於在c標準中,沒有規定指標類型的大小,具體大小依靠具體的環境。
娓娓道來c指標 (1)指標就是地址