1. 程式人生 > >【Objective-C】類與結構體的區別

【Objective-C】類與結構體的區別

  • 只能在類裡面寫方法,不能在結構體裡面寫方法
  • 類——物件,結構體——值
  • 類——引用型別
    • 位於棧上的指標(引用)
    • 位於堆上的實體物件
  • 結構體——值型別
    • 例項直接位於棧中
  • 拷貝行為:
    • classname *a = b; a和b都是指標(指標儲存在棧上),都指向同一個物件(物件儲存在堆中),物件的值改變,a和b同時改變
    • structname a = b; 進行的是值拷貝(複製值後儲存在棧上),如果改變b的值,a的值不會跟著改變
  • 傳參行為:
    • 傳參的本質上就是拷貝,因為物件傳入的是指標,所以值改變的函式呼叫完畢之後,物件的值會改變,而結構體的值不會改變(因為結構體是值傳遞)
    • 在main函式呼叫子函式的時候,系統會為子函式建立一個棧,物件傳參後存放的是引用(指標),結構體傳參後儲存的是結構體的值的拷貝