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

2021-06-25 14:47:35 字數 2512 閱讀 2848

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