C++中的數組和指標

來源:互聯網
上載者:User
C++中的數組和指標 先看兩個定義(聲明)int* aryp[10];int (*pary)[10]; aryp 是一個10個元素的數組,數組中元素類型為int*pary 是一個指標,是指向數組的指標,這個被指的數組的類型為 int[10]這樣看pary的定義會clear一點 typdef int INT_ARY_TEN[10];INT_ARY_TEN* pary; C++是一種強型別(strong typed)語言,C++中有一組特殊的type:數組數組的類型不單只跟元素的類型相關,還與元素的個數相關。int aten[10];int anine[9]; 則 aten 的type 和 anine 的type 是不一樣的,aten的類型為 int[10], anine的類型為 int[9],而不是通常認為的int* const,儘管我們確實可以把它當作int* const 用。這點跟Java不一樣,在Java中他們兩的類型都是Array 數群組類型還有一個特殊之處,他們不能作為函數的參數和傳回值類型void foo(int arg[10]) {}arg的類型其實是int* const,跟那個10一點關係也沒有,甚至[]裡不寫任何東西都沒有關係。這也是為什麼有人說數組名就是常量指標的原因。 除了函數,數組還不能作為typeid的參數typeid(aten).name() 是會返回 "int*" 的正是因為這個原因typeid(aten) == typeid(anine) 會返回trueaten, anine在傳進去的時候,類型都變成 int* const了 (typeid不記錄常量資訊,所以cosnt去掉了) 既然數組也是一種類型,則由*操作符就可以定義另外一種類型:指向數組的指標,例如開始的那個pary,可以這樣定義 int (*pary)[10] = &aten;而int (*pary)[10] = &anine; 是不合法的。編譯器抱怨說:cannot convert from 'int (*)[9]' to 'int (*)[10]'

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.