1、對於已定義的某個變數的讀取:通過該變數來訪問它的值;通過該變數的儲存位置讀取數值(指標)。作業系統會將所有的記憶體單元進行編號。
關於32位作業系統與64位作業系統支援的最大記憶體。計算機底層使用二進位制進行管理,所以32位作業系統支援2的32次方個編號,即4g的記憶體位址。
int a=1;
int b=2;
則0x00010001 和0x00010003這個兩個記憶體編號就是指標。
在程式設計中,通過變數a/b來獲取變數值得讀取方式稱為「直接訪問」;二程式通過記憶體編碼位址先找到對應編碼的記憶體單元,在從記憶體編碼單元上讀取數值的方式為「簡介訪問」。
變數的記憶體位址就是該變數的指標,而用於儲存該記憶體位址的變數就是指標變數(即a和b)。
2、關於指標的使用
*:後面緊跟乙個指標變數,用以讀取該指標變數對應的變數
int a=200//定義乙個int型別的變數
int*p;//定義乙個指向int變數的指標
p=&a;//將a變數的記憶體位址賦值給p這個指標變數的值
nslog(@"%d",*p);//*p表示取出指標p對應的變數,即200;
nslog(@"%d",a==(*(&a)));//取出a的指標,然後將a的指標進行反向取出,得到200;
定義指標變數時,必須使用*來標示定義的指標變數;
c語言是強型別語言,使用指標變數之前必須對其進行宣告。而且一旦宣告了該指標變數的型別後,該指標變數就只能指向對應型別的變數。如int*p只能執行int型別數值的指標;double*q同理。 3.
void swap(int*p1,int*p2){
int tem=*p1;
*p1=*p2;
*p2=tem;
p1=p2=nil;
int main(int argc,char*argv){
@autoreleasepool{
int a=5;
int b=3;
int*p1=&a;
int*p2=&b;
swap(p1,p2);
關於該段**執行的結果:a和b的數值進行了替換,但是p1和p2的數值並沒有發生變化,所以說明在進行運算時只是將指標的副本進行了傳遞,並沒有對指標本身進行傳遞和修改。
C 語言中的指標
指標是 c 語言中的精華,正確靈活的運用指標,可以表示複雜的資料結構,動態分配記憶體,方便使用字串和陣列,呼叫函式返回多結果,直接處理記憶體單元等等。位址就是記憶體的編號,如果拿旅店作為記憶體,那麼每個房間號其實就相當於位址了。當程式編譯時,就會對變數分配記憶體單元,分配時按變數型別分配大小。經過編...
C語言中的指標
隨著程式語言的越來越多,但c語言在程式語言中的地位似乎始終沒有改變,其中得益於c語言中的指標,可以直接去操作記憶體位址與暫存器,執行效率也高,在嵌入式領域運用得尤其廣泛。對於初學者來說指標是c語言中很難翻越的一座大山,指標的掌握程度直接關係到c語言的掌握程度,其實指標並不是那麼高不可攀,只是紙老虎而...
C語言中的指標
指標是c語言中非常重要的東西,書本上寫了好多來解釋裡面的原理,當年老師也跟我們講了好多這方面的東西,一直就是感覺沒有聽明白。直到我看到了指向指標的指標,我建立了自己的理解,不知道是否正確,但是基本能解決遇到的問題。int p p i p。type p,宣告指標變數,type 例如int 告訴計算機p...