指標數組數組傳參、指標引用傳參

來源:互聯網
上載者:User

指標和數組作為參數傳入函數時,傳入的是地址,即指向變數的地址和數組的首地址,可以在函數中改變指標或數組的值,但本質上它們還是值的傳遞(區別於變數的值傳遞的是:變數值傳遞不會改變實參原來的值。),我們無法對指標和數組的地址進行操作(如:地址賦值,分配記憶體等),要進行地址操作需要使用指標引用或指標的指標。


樣本:

<span style="font-size:18px;">int main(){int i = 1;int *p = &i;int sz[] = {1};testFun(p, sz); //10, 20testFun1(p);//10testFun2(p);//50int * p1 = NULL;testFun3(p1);*p1 = 10;//10        delete p1;        return 0;}</span>


<span style="font-size:18px;">//值傳遞void testFun(int *p, int sz[]){*p = 10;sz[0] = 20;}//值傳遞int g_int = 50;void testFun1(int *p){p = &g_int;}//指標引用void testFun2(int *&p){p = &g_int;}//指標引用分配記憶體void testFun3(int *&p){p = new int;}</span>

運行testFun()後,指標值變為10,數組變為20

運行testFun1()後,指標值為10,不變

運行testFun2()後,使用指標引用,指標值變為50
運行testFun3()後,使用指標引用,記憶體配置成功,指標可進行賦值


指標引用 == 指標的指標

指標的引用儲存的地址實際是指標本身的地址(即類似於int型的4位元組空間),對它進行地址賦值或記憶體配置,實際是使該指標重新指向一個新的記憶體塊的首地址(即儲存新的指標變數地址,當然類型要是一樣的)。


使用const &傳參

屬於值傳遞,雖然使用引用,傳入的是地址,但是傳入的值無法改變。


聯繫我們

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