iOS中的雙指標

來源:互聯網
上載者:User

iOS中的雙指標

 

二級指標:也叫雙指標,指標的指標用作參數,大多用在需 要函數改變該指標的指向時 代碼目的是setPeople方法執行後,people指標指向了一個新 建立的people對象。

一級指標

 

ZYPeople *people=nil;NSLog(@1__%@__%p__%p,people,people,&people);[self setPeople:people];NSLog(@4__%@__%p__%p,people,people,&people);-(void)setPeople:(ZYPeople *)people2{NSLog(@2__%@__%p__%p,people2,people2,&people2);people2=[[ZYPeople alloc] init];NSLog(@3__%@__%p__%p,people2,people2,&people2);}


 

 

}log輸出如下:

 

 

 

1__(null)__0x0__0xbfffcae42__(null)__0x0__0xbfffca643____0x8ce9750__0xbfffca644__(null)__0x0__0xbfffcae4


 

概述:

people為一個指標,可以直接使用這個指標所儲存的記憶體地 址,又可以使用這個地址裡儲存的值。 指標是一種資料類型,與其它的資料類型不同的是指標是一 種“用來存放地址值”的變數%p 一般以十六進位整數方式輸出指標的值 &取地址符號:&後面跟變數標識符即可獲得變數的記憶體位址 指標雖然很小 但還是佔一些記憶體,也有自己的記憶體位址log中列印了3項:指標指向地址中的值(對象)、指標的值 (對象地址)、指標的地址

分析:2和1中的對象內容、指標的值都一樣,只有指標本身 的地址不 一樣,兩個指標指向了同一塊地址,但是這兩個指標本身的 地址不同,這是兩個不同的指標變數。 在函數的參數傳遞中,編譯器會為函數的每個參數製作臨時 副本。

此處people2就是people的副本; 3、people2指標指向了一個新建立的ZYPeople對象的地址 輸出了指標指向地址中的值(對象)、指標的值(對象地 址)、指標的地址

4、和1一樣

因為在函數的參數傳遞中,編譯器會為函數的每個參數製作 臨時副本(也就是拷貝指標)。所以people2在方法中賦值, 與外部的people沒關係 實現不了目的

二級指標

 

 

ZYPeople *people=nil;NSLog(@1__%@__%p__%p,people,people,&people);[self setPeople:&people];NSLog(@4__%@__%p__%p,people,people,&people);            -(void)setPeople:(ZYPeople **)people2{NSLog(@2__%@__%p__%p,*people2,people2,&people2);    *people2=[[ZYPeople alloc] init];    NSLog(@3__%@__%p__%p,*people2,people2,&people2);}


 

log輸出如下

 

 

1__(null)__0x0__0xbfffcae42__(null)__0xbfffcae0__0xbfffca603____0xbfffcae0__0xbfffca604____0x8cc5bc0__0xbfffcae4


 

 

在我看來,所謂的雙指標就是建立一個對象p ,再建立一個指標p1指向p,然後再建立一個指標p2,p2內儲存了p1指標的地址,取得p2指標的內容,就是拿到了p1指標的地址,然後對其的指向進行修改.


 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.