陣列名作為函式引數時,退化為指標

2021-07-10 23:34:35 字數 831 閱讀 1842

陣列名作為函式引數時,退化為指標

func ( char str[100] )函式中陣列名作為函式形參時,在函式體內,陣列名失去了本身的內涵,僅僅只是乙個指標;在失去其內涵的同時,它還失去了其常量特性,可以作自增、自減等操作,可以被修改。

陣列作為引數傳給函式時傳的是指標而不是陣列,傳遞的是陣列的首位址

。在c++裡引數傳遞陣列永遠都是傳遞指向陣列首元素的指標,編譯器不知道陣列的大小。如果想在函式內知道陣列的大小,需單獨傳入長度len作為引數。

如:fun(char [8])

fun(char )

都等價於 fun(char *)

因此,陣列名的本質如下:

(1)陣列名指代一種資料結構,這種資料結構就是陣列;

例如:

char str[10]; 

cout << sizeof(str) << endl;

輸出結果為10,str指代資料結構char[10]。

(2)陣列名可以轉換為指向其指代實體的指標,而且是乙個指標常量,不能作自增、自減等操作,不能被修改;

char str[10]; 

str++; //編譯出錯,提示str不是左值

(3)陣列名作為函式形參時,淪為普通指標。

指標的長度(占用記憶體的大小)為4位元組,故sizeof( str ) 、sizeof ( p ) 都為4。

使用陣列名作為函式引數

主函式中初始化乙個二維陣列,表示乙個矩陣,矩陣,並將每個元素都輸出,然後呼叫子 函式,分別計算每一行的元素之和,將和直接存放在每行的第乙個元素中,返回主函式之 後輸出各行元素的和。include using namespace std void rowsum int a 4 int nrow int...

陣列作為形參退化為指標

include void sizeof int arr int main void printf 傳入sizeof 函式進行計算 n sizeof arr printf 為傳入sizeof 函式直接在主函式中進行計算 n printf d n sizeof arr 在 中可以看到,主函式與sizeo...

C語言 引數傳遞使陣列名退化為指標

做題的時候發現了一道題,想了很久也沒有想出來與給出演算法相符合的思路 最後寫了個可以勉強得出結果,但是好像不怎麼對的方法 因為題目給出的變數都已經使用過,所以只能使用陣列名作為增量向後遍歷 但是這時就出現了問題,陣列名竟然不指向首位址元素了,事後想想也知道如果一直指向首元素那麼顯然不能通過這種自增陣...