C 字串陣列如何作為函式引數

時間 2021-06-25 14:48:03

1樓:匿名使用者

sizeof(string),由於它們都是和系統相關的(我的作業系統是32位的),所以在不同的系統下取值可能不同,這務必引起注意,儘量不要在這方面給自己程式的移植造成麻煩。一般情況下,在32位系統中,sizeof(string)為16位元組。

sizeof都和記憶體中的儲存方式有關。你這裡沒有理清楚陣列函式的傳參的實質,你這裡定義字串陣列string

x, string y;

在main函式中,x,y都是陣列, sizeof(x)的值為陣列的長度*sizeof(string)。值得注意的是x也代表陣列x中元素的首地址。這裡不要把sizeof(x)的值理解為4(即指標的長度),但是在函式中的陣列會定義為指標。

如你的函式:

void test(string *y,string *x)

2樓:匿名使用者

當陣列名做形參在函式體內時,陣列名失去了其常量特性,淪落為與指標相同四位元組待遇的平民。

簡單的講,就是如果你想把陣列傳給一個函式,那麼必須將這個陣列的長度也傳給這個函式。因為陣列名當形參時,他就會退化成一個4位元組的指標,同時這個陣列的長度你也沒法知道了

3樓:

這個是c++的語言特性的問題。

將陣列作為函式引數,陣列會退化成指標。

也就是在函式test中,y和x不再是陣列,僅僅是指標。指標的長度都一樣。

所以將陣列作為引數傳入時,一般會將陣列長度作為另一個引數,不然函式無法判斷陣列長度。

4樓:匿名使用者

為啥要用c語言的陣列呢? 你的這個問題是由於將陣列傳遞給函式時陣列的長度資訊丟失導致。

c++有自己的「 陣列」 : std::array std::vector std::dynarray

用這些更好,而且都是標準庫,c++編譯器可能優化這些「陣列」的效能。

c++中如何把陣列作為引數

5樓:匿名使用者

對於陣列

名作為參bai數傳遞,有兩種方du式zhi:

1. 使用陣列名本身,如以下程式求dao陣列a的最專大值#include

int max(int x,int n) //作為陣列定義形屬式2.用指標作為引數,這就簡單了,如:

int max(int *x,int n) //作為陣列定義形式int main(void)

;int m;

m=max(a,5); //陣列名用為實參printf("a的最大值:%d\n",m);

return 0;

}兩者結果一樣

6樓:匿名使用者

宣告定義bai:

void function(int a,...)

main()

c++ 怎麼把字元陣列當作函式引數傳遞?

7樓:陳mc樂園

以指標方式或數bai組的方式都可以實du現引數傳遞zhi的,實際上都是將dao陣列的首地址傳遞專到子函式中去的。屬例如:#include

#include

void fun1( char *pstr )void

fun2( char arr )

int main()

8樓:匿名使用者

c++不能傳陣列,傳bai的是第一個du陣列zhi元素的地址。dao

void f(int array[10])void f(int array)

void f(int *array)

三種一樣的意思,最好寫版成指標形式。權

9樓:匿名使用者

以指標方式bai 或 陣列方du式都可以實現引數傳遞,實際zhi上dao都是將陣列的首版地址傳遞到子函式中去。權如:#include

#include

void fun1( char *pstr )void fun2( char arr )int main()

c++如何以一維陣列作為函式引數

10樓:

定義復為指

針,同時傳入制陣列長度:

void func(int* array,int len);

不過既然是c++,一維陣列都建議用vector了:

void func(std::vector& array);

11樓:_冬晨

在c、c++中,在函式引數中,指標與陣列名是等同的。宣告函式引數時這樣:

function (int arg)

在呼叫這版個函式時,假權設你已經宣告瞭陣列a[16],那麼這樣呼叫 function(a);

直接傳入即可。c、c++中陣列作為函式引數時一維陣列不需要指定長度。不過也正因如此,容易產生越界的問題,所以你也可以把陣列的最大長度也作為一個引數傳進去

12樓:匿名使用者

void k(int *p)

void main()

c 函式如何傳遞字串,C 函式如何傳遞字串

椴 substring 擷取子串 它有兩種形式,第一種是 string substring int startindex 第二種是 string substring int startindex,int endindex concat 連線兩個字串 replace 替換 它有兩種形式,第一種形式用一...

c 字串長度函式,求字串長度函式 C

司馬刀劍 string str welcome to chaina int m1 str.size 求字串長度或者下面的 int m2 str.length 同上面size功能一樣,都是求字串長度的 賈林龐喬 sizeof 得到的是資料型別的長度,比如int char double型別的sizeof...

C語言字串問題,C語言字元陣列與字串問題

字串初始化,如果逐個賦值的話,系統不是會自動新增 0 嗎不是。圖一就是長度為4的陣列,圖二長度為5圖三會是新增 0,但是是會把後面所有的都設為 0因為圖一和圖四不以 0結尾,所以不能用strlen和strcmp,會越界 圖四也可以用char str 4 stop 這樣賦值。如果不手動加長度就會是5了...