指標陣列陣列傳參 指標引用傳參

2021-07-22 19:35:42 字數 980 閱讀 9827

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

示例:

int main()

; testfun(p, sz); //10, 20

testfun1(p); //10

testfun2(p); //50

int * p1 = null;

testfun3(p1);

*p1 = 10; //10

delete p1;

return 0;

}

//值傳遞

void testfun(int *p, int sz)

//值傳遞

int g_int = 50;

void testfun1(int *p)

//指標引用

void testfun2(int *&p)

//指標引用分配記憶體

void testfun3(int *&p)

執行testfun()後,指標值變為10,陣列變為20

執行testfun1()後,指標值為10,不變

執行testfun2()後,使用指標引用,指標值變為50

執行testfun3()後,使用指標引用,記憶體分配成功,指標可進行賦值

指標引用 == 指標的指標

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

使用const &傳參

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

指標陣列 陣列指標 陣列傳參

指標陣列 實際上是乙個陣列,陣列中存放的元素是指標 例如 int arr 10 char arr1 5 陣列指標 實際上是乙個指標,指向乙個陣列的指標 例如 int p 10 這就表示乙個p指標,指向乙個大小為10陣列 在陣列傳參的過程中,由於c語言的對於速度的要求的特點,是不會傳整個陣列的,最終陣...

陣列和指標傳參

在我們寫函式時,有沒有被引數型別難到呢?如果有,那就耐心看完本篇部落格吧 一維陣列傳參 二維陣列傳參 總結 陣列傳參時,降級為其內部元素型別的指標,二維陣列傳參,函式的引數只可以省略第乙個 的數字,因為對二維陣列,可以不知道有多少行元素,但必須知道一行有多少元素。引申為,多維陣列傳參,只有第乙個 的...

C 陣列指標 指標陣列及陣列傳參

一維陣列傳參 二維陣列傳參 一級指標傳參 二級指標傳參 小引 在指標的學習階段,有不少同學都十分畏懼這個物什,甚至 談指標色變 其實對指標的不理解,其實本質上是對記憶體的不理解,本篇部落格就從零開始 系統的來講解指標這個話題。首先我們應該明確以下的一些基礎常識 指標是乙個變數,用來存放位址,位址唯一...