咱們知道,指針是指向一個地址的。而指針的類型則代表了指針指向內容的大小,即包含字節數,這在對於指針的自增和自減中體現的很明確。數組
好比下面一段代碼,咱們分別定義了3個不一樣類型的指針,指向相同的地址,而後賦予不一樣的值。這樣一下咱們就明瞭了。spa
//解釋代碼
char *p_char;
short *p_short;
long *p_long;
p_char = (char*)0x1000;
p_short = (short*)0x1000;
p_long = (long*)0x1000;
*p_char = 0x12;
*p_short = 0x1234;
*p_long = 0x12345678;
從以上的代碼咱們便可看出,不一樣類型的指針,所能表示的數據大小不一樣。並且須要注意的是,對指針的賦值操做。C語言使用指針的限制是,全部對於指針的操做必須是同類型的指針才能夠進行。像0x1000這樣只是一個數字而已,前面加上類型咱們才能知道咱們操做的地址指向的內容是多少字節。這樣就能夠把指針和地址區分開。而另外須要注意的是C語言爲了提高效率對於指針做出了起始地址對齊的要求,好比short指針地址須要被2整除,而long指針地址則須要被4整除。指針的存在讓咱們對內存的操做有了自由性,但自由的同時也增長了危險性。好比若是咱們定義指針類型時類型不一樣,那麼在自增或者自減時指針地址的偏移就會不一樣。好比char型的指針,執行自增後指針地址加1,而short型和long型則分別是加2和加4.若是咱們編寫程序中沒有考慮到這點,那麼很容易致使錯誤。並且相互連續定義的數組地址不必定連續。這些都是不當心就會犯錯的地方。
參考《刪繁就簡——單片機入門到精通》指針
天天都進步一點。
code