2008年6月3日

c語言-pointer(1)-基本介紹

首先,介給一下%u、%p的用法, 兩者適用於&x的輸出。%u是十進位無號整數之格式印出。%p則是十六進位。


前提:指標是call by address. 所以只要改變副程式的值就改變主程式的值。
簡單指標的方法:
(1)int *ptri //宣告一個整數指標ptri。
(2)ptri=&sum //將sum位址設指標ptri存放。
(3)此時*ptri的值=sum的值,ptri的值=sam的位址,&ptri的值=新一個位址。
(4)值得注意的是在宣告int *ptri的時候,其宣告之後還沒有設值,但是可能會有值,原因為可能是記憶体內留有殘值。
(5)值得一提的是宣告一整數變數時,其所指向該變數的指標型態也要是整數。
_____________________________________________________________________
再來介紹的是:位址運算值「&」與依址取值運算值「*」。

位址運算值「&」

&是將變數或陣列元素的位址取出,所以不並不適用在常數或是運算式,如&100、&(i++)等,這都是不合法的使用。

依址取值運算值「*」
沒有什麼好介紹的。

______________________________________________________________________________

(1)特殊用法:
int a,*ptr1,*ptr2;
ptr1=&a;
ptr2=ptr1;
上述的程式,會等於
int a,*ptr1,*ptr2;
ptr1=&a;
ptr2=&a;

________________________________________________________________________________
(2)注意事項:
使用指標時要特別小心,最好在程式中一經過宣告後,立刻將指標指向正確的變數,如果無法一開始就讓指標設值的話,最好利用NULL使指標不指向任何記憶體位址。例如:
int a,*ptr1,*ptr2;
ptr1=&a;
ptr2=NULL;

沒有留言: