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了...