深入了解C指針之---指針含義符号
該系列文章源于《深入了解C指針》的閱讀與了解,由于本人的見識和知識的欠缺可能有誤,還望大家批評指教。
1、指針的含義:
指針本身也是變量,與其他一般變量不同的是:指針變量中沒有存儲具體類型的資料,而是存儲這一串16進制的值。這串值,就是記憶體的位址。計算機的OS運作時,管理記憶體過程中,為了高效管理記憶體,為記憶體進行編号,以位元組為機關編号。而記憶體的位址存放到變量中。這樣看來,指針的位址也是位址,指針變量中的值也是位址。
2、*符号的作用
(1)聲明指針變量使用
(2)解指針變量,取出指針值中對應位址的值
3、&符号的作用
取變量的位址
請看例子,非常簡單,但是說明的問題還是很多:
1 #include <stdio.h>
2
3 int main(int argc, char *argv)
4 {
5 int num = 10;
6 int *numptr;
7 numptr = #
8 printf("Address num: %p, value num: %d\n", &num, num);
9 printf("Address numptr: %p, value numptr: %p, value *numptr: %d\n", &numptr, numptr, *numptr);
10
11 return 0;
12 }
第一次運作結果:
Address num: 0x7fffbfa6236c, value num: 10
Address numptr: 0x7fffbfa62360, value numptr: 0x7fffbfa6236c, value *numptr: 10
第二次運作結果:
Address num: 0x7ffdbff4ff0c, value num: 10
Address numptr: 0x7ffdbff4ff00, value numptr: 0x7ffdbff4ff0c, value *numptr: 10
(1)聲明一個變量num,實際在計算機中num是代表位址,而位址就更加具體了,變量名隻是讓人看起來更加習慣,在計算中是不存在這個num變量的,很明顯可以看出兩次運作的結果中同樣的num,位址是不一樣的,但是這不會影響這個變量名為num,就向人的名字一樣,取名字時都是可以随便取的一樣。
(2)雖然兩次的位址不一樣,但是由于使用了相同的變量名num,是以使用變量通路是得到的就是同樣的值為10
(3)例中我門使用了&取位址符号,順利得到了num的位址,兩次都不一樣
人就像是被蒙着眼推磨的驢子,生活就像一條鞭子;當鞭子抽到你背上時,你就隻能一直往前走,雖然連你也不知道要走到什麼時候為止,便一直這麼堅持着。