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