close
變數有分存值變數與存址(記憶體位址)兩種,一般未加修飾宣告都是存值變數,例如
int v=100;
NSLog(@"%i",v)
就會輸出【100】,如果想要取得一個存值變數的記憶體位址,可以使用 "&" 放在變數前面,如:
int v=100;
int v=100;
NSLog(@"Address is: %x",&v);
就會輸出【Address is: 5fbff800】之類的記憶位置。
指標變數(又稱存址變數),則是在宣告變數前,加一個星號 * ,其內容就會變成指標變數,然後我們就可以由該指標指向的位置,進行各項操作。請看下面的例子,會比較容易了解:
int v=100;
int *pointer=&v;
NSLog(@"Address is:%x, value is :%i",pointer,*pointer);
輸出為【Address is:5fbff80c, value is :100】。
為什麼要有指標變數號?因為我們在寫程式的時候,不可能把所有的變數都設為全域變數,那會造成管理上的不便(太多相同名稱的變數),以及記憶體的浪費(所有的變數都永遠佔記憶體不放)。但又要在不同的 stuck 之間,進行資料的操作,我們就可以用傳送記憶位置的方式來傳送,而不是以回傳值的方式來操作。
文章標籤
全站熱搜