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語言中,賦值 與 賦初值 又叫初始化 是不一樣的。在定義變數的同時賦值,叫賦初值,而定義後賦值就是普通的賦值了。你說的 不能用賦值語句將一字串常量或字元陣列直接賦值給一個字元陣列 這句話是說普通賦值的情況,也就是,不能定義一個字元陣列以後,再給他直接賦值。而 char s 12345 這個語句,是...
c為字串陣列動態賦值的問題,C 為字串陣列動態賦值的問題
改用list吧.方法一是沒有new 沒有分配空間 方法二是在new的時候沒有指定大小,預設是0個元素,所以對其任意一個元素賦值都是越界.在c 中,陣列一般用來存放大小確定的資料.如果陣列大小未知,建議使用list lista new list a.add we messagebox.show a 0...
跪求c語言字串處理函式,跪求 c語言字串 7個處理函式
1.字串連線函式 strcat 原型 char strcat char str1,const char str2 2.字串查詢函式 strchr 原型 char strchr const char str1,const char str2 3.字串比較函式 strcmp 原型 int strcmp ...