c 把陣列當做引數傳遞到方法裡的小問題

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

1樓:匿名使用者

陣列作為引數傳遞,傳遞的是陣列的起始地址,可以認為是a指標的副本,因為在傳遞過程中以及在函式func中a退化為int*,而不再是與a相同的指標常量,這些對原呼叫函式中的a沒有影響

直接定義引用型別的比較少吧?一般在函式宣告的引數宣告部分使用引用型別,目的在於實現對引數的修改,相當於指標,但比指標容易和安全,因此可以認為是傳遞的其地址

一般直接傳遞都為 傳值傳遞,即僅將實參副本傳入函式,函式中隊形參的修改不會影響實參

若要求實現對實參的修改,一般需要宣告為形參引用

2樓:倒黴熊

1:傳進去的指標是最初定義a時的指標.

在普通變數或下標變數作函式引數時,形參變數和實參變數是由編譯系統分配的兩個不同的記憶體單元。在函式呼叫時發生的值傳送是把實參變數的值賦予形參變數。在用陣列名作函式引數時,不是進行值的傳送,即不是把實引數組的每一個元素的值都賦予形引數組的各個元素。

因為實際上形引數組並不存在,編譯系統不為形引數組分配記憶體。那麼,資料的傳送是如何實現的呢? 陣列名就是陣列的首地址。

因此在陣列名作函式引數時所進行的傳送只是地址的傳送, 也就是說把實引數組的首地址賦予形引數組名。形引數組名取得該首地址之後,也就等於有了實在的陣列。實際上是形引數組和實引數組為同一陣列,共同擁有一段記憶體空間。

2:傳他們各自的一個副本

3樓:匿名使用者

創造一個a的指標的副本,然後再把這個副本傳進去

定義了一個int c = 3,還有一個引用型別,比如int &c; 如果把他們分別傳進相應的方法,他們是傳本身

4樓:

就拿上例來說 如果執行func(a) 則是將實參a陣列的首元素的地址傳遞給形參b,也就是說 a和b一起佔同一段記憶體單元 這個與變數作為函式引數是不同的 不需要創造副本 你說的第二個問題是引用傳遞 引用傳遞跟剛才的陣列(指標)傳遞一樣 傳的是他們的地址 也就是不需要創造副本 與此還有一個值傳遞 這個是需要創造副本的 而且 函式對傳遞的值 沒有任何改變 隻影響在函式體中產生的副本的值 你可以就指標傳遞 引用傳遞 還有值傳遞 研究一下 有利於以後的深入學習

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

5樓:匿名使用者

以指標方式 或 陣列方式都可以實現引數傳遞,實際上都是將陣列的首地址傳遞到子函式中去。

如:#include

#include

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

6樓:匿名使用者

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

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

void f(int *array)

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

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樓:匿名使用者

對於陣列

名作為參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;

}兩者結果一樣

11樓:匿名使用者

宣告定義bai:

void function(int a,...)

main()

c++裡的陣列作為引數怎麼傳遞

12樓:哎呀

將資料的名bai稱當成指標直接傳入du就好。

示例**及解說如zhi下:dao

//下三行基本環境

#include

#include

using namespace std;

//定義一個專需要傳入 整數數屬組 作為引數的函式int myfun(int a)

//主函式 進行 子函式呼叫

main()

{ int ay[5]; //定義一個陣列ay[0] = 121; //讓資料的0號位的值為 121ay[2] = myfun(ay); //呼叫,並讓返回值放到 陣列的 2號位

cout<< ay[2] <

c語言字串轉成byte陣列,C語言把16進位制字串轉換成位元組陣列

1 c這麼靈活,通常不用轉。char a 1024 hello world byte b byte a 這時b就等同於轉了,直接用b 123 等就可以2 強行轉需要複製,浪費一倍記憶體。include char a 1024 hello world byte b 1024 memcpy b,a,10...

老兄怎麼樣使用C或C 把對陣列1,5,7,2,5,4,10進行氣泡排序

include void bubble sort int array,int n if 1 flag break for i 0 i n 1 i printf d,array i printf n return void main bubble sort nnum,sizeof nnum sizeo...

C語言中怎麼把一維陣列賦給另外一維陣列

勵光解芷容 不可以,之所以不可以是因為陣列名是個常量,它的值是陣列首元素地址,即不能將其它值付給這個常量。可以採用迴圈的方法逐個複製,或者採用另一個同型別的指標 相對於陣列名,指標是變數 指向要複製的陣列,之後就可以採用這個指標訪問之前的那個陣列 武冰業雁菡 void main int b 10 i...