[C++]數組指標,數組引用,函數指標

來源:互聯網
上載者:User

標籤:size   為什麼   個數   定義   color   數組指標   函數指標   一點   名稱   

數組指標是指一個指向數組的指標,例如有一個數組指標p指向一個數組a[],則 *p是取到這個數組,也就是說 *p=a,因此 **p =a[0],

它的定義為:

int a[10];int (*c)[10]=&a;

(*c)表示它是一個指標,若不加括弧則變成 指標數組 ,[10]表示指向一個長度為10的數組,int 表示數組元素為int

因為函數不能返回數組,所以可以設定返回一個數組指標,即

auto fo2(int (&a)[10]) -> int (*)[10]{    a[5]=10;    return &a;}

int (&a)[10] 是一個數組引用,

這裡定義fo2的傳回型別用了尾置傳回型別,int (*)[10]是傳回型別。如果直接定義函數,是

int (*fo2(int (&a)[10]))[10];

還是尾置返回清楚一點,:)

事實上雖然為了用指標指向一個數組可以用 int *p=a這樣的方式,不過其實這裡a跟p是兩個東西,p只不過是指向了a頭元素的地址,

因此sizeof(a) != sizeof(p),這裡也就能理解為什麼要用數組引用了,採用了數組引用後,

int fo(int *p){    return sizeof(p);}int fo1(int (&p)[10]){    return sizeof(p);}

fo1返回的就是正確的數組記憶體大小。

函數指標:

使用別名的方式:

typedef int (*f)(int);
f func;

直接定義:

int (*func)(int);

func可以指向任意一個參數為int ,返回為int的函數。

還可以定義函數指標數組:

int (*func[10])(int);

其實都跟定義數組差不多,形式上與函數保持一致就行了。

還有諸如指標的指標的引用:

int a;int *p=&a;int **&pp=&p;

引用也只是在名稱前加個引用。

[C++]數組指標,數組引用,函數指標

聯繫我們

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