C 陣列做引數為什麼一定要傳遞陣列長度

時間 2021-07-21 03:36:36

1樓:千鋒教育

因為怕引起陣列越界,當陣列傳入一個函式後,就會用迴圈來處理。

比如下面的例子很好地說明了這個問題:

#include "iostream.h"

int max(int a,int size);//size是陣列的大小

int main()

;cout

max=a[i];

}return max;

}執行結果:98

2樓:想不出名字呀

因為a其實是一個指標,你肯定是用的x86,sizeof(a)表示的是地址的長度,x86地址長度為4個位元組,所以sizeof(a)/sizeof(int)為1。(通常說到sizeof(a)為陣列長度是c編譯過程中自動替換的,如果陣列作引數傳入函式將不會替換,所以此時函式裡的a就是一個指標)

3樓:白花戀歌

c++中函式的引數是陣列的時候,傳遞給函式的是一個指標,指向陣列的首地址,指標的大小一般固定為4b,一般情況下int 的大小也是4 ,所以。。。。陣列的長度不是必須的引數,你可以不傳遞,傳遞進來只是為了方便程式設計,函式裡面會用到,

不知道為什麼變成了紅色字。。- --

4樓:新泥稱

假如我是main函式, 你是reverse函式,我呼叫你,只告訴你 一個int 型別的陣列首地址,讓你處理, 你不知道長度你怎麼辦事.

又不是字串,字串由'\0'結束嘛所以不需要告訴長度.

在 c++中如何將陣列型別和長度作為引數傳入

5樓:匿名使用者

陣列型別可以自定義巨集

比如 int 定義成 1,char 定義成 2#define typeint 1

長度,是多少就傳多少唄。。

ps:完全不理解你為什麼要把陣列型別和長度傳成引數幹嘛用

6樓:匿名使用者

function (t t, int length)

給陣列賦值的時候就可計算出陣列的長度.

7樓:大衍之

你要實現什麼功能,如果說僅僅作為引數傳入的話,可以隨便寫了

諸如int function(int flag,int length)

c++選擇題陣列名作為函式的引數傳遞的是(?),請舉例分析為什麼?

8樓:匿名使用者

答案是b;

int a[5] = ;

a就是數

組名,也是a[5]的第一個

元素即a[0]的地址。

#include

int add(int b)

int main(void)

;sum = add(a);

}add(a)這裡傳遞的

內就是陣列a的首容地址,也就是陣列名。

9樓:倒黴熊

b、陣列首元素的地址

這個沒有好舉例的吧 c++就這樣規定的

10樓:匿名使用者

b、陣列首元素的地bai

址void fun(char b);在函式內部你是du不能改變b的指向的

zhi,因dao為陣列引數預設是const指標。專等同於void fun(const char* b);void fun2(char *b);這個在函式屬內部是可以改變b的指向的,因為引數宣告的時候是一般的指標。

c 中為什麼陣列地址可以作為引數傳遞而不能直接賦值給別的陣列呢

這是甲魚的臀部 規定.因為陣列名錶示陣列的首地址,int b它要定義自己的陣列空間,當然不能用別的陣列的空間,所以不能把a傳給它.但陣列作為引數傳遞時,array只是個臨時指標變數,函式還是直接對實引數組進行操作,不需要另外生成陣列.樓上兩位說的a的指標,其實就是陣列首元素的指標,即陣列首地址,只不...

為什麼一定要男人做家務,為什麼一定要讓孩子做家務

九怪啊 一 人與人之間,貴在 換位思考 做家務可以提高男人的換位思考能力。例如,我從前認為 洗碗 沒有技術含量,洗了很多次後,才發現並不簡單,如何洗得快?如何洗得乾淨?如何節約水資源?如何減少二次汙染?問題很多。更重要的,男人還可以在洗碗過程中發散思考,炒菜為什麼沒有蒸菜健康,下水道為什麼會堵住?人...

做眉毛為什麼一定要做半永久,做眉毛為什麼要做半永久

半永久全稱是韓國半永久定妝,優勢如下 1 首先就是定型後可以省去日常化妝 卸妝的時間,比別人多出不少時間。2 一般可以維持2 5年,時間到了就變淡然後沒有了,到時候可以根據潮流在決定新的造型。3 非常自然,這是韓國半永久的一大優勢,當然也要看美容師技術。4 這一點比較關鍵,做了韓國半永久定妝後你就不...