c裡把int作為函式引數是什麼意思

2021-03-03 21:00:16 字數 2462 閱讀 3216

1樓:匿名使用者

這是傳引用呼叫,函式呼叫引數的時候不會再拷貝乙個副本。

// 函式呼叫後a 和b並沒專

有達到交換的目屬的(拷貝臨時變數 a, b)int swap(int a, int b)// 函式呼叫後a 和b的值進行了交換(直接作用於 a, 和b)int swap(int &a, int &b)

c++ * a和*&a作為函式的引數時有什麼區別?

2樓:匿名使用者

如果你說的是函式的形參,那麼

void foo(int* ptr);

是傳值呼叫,比如你這麼呼叫

int a;

int* pvalue = &a;

foo(pvalue);

這樣的情況下,pvalue的值是不能被函式foo改變的,也就是pvalue肯定是指向a的。

但是如果你這麼宣告

void foo(int*& ptr);

則是傳遞引用,那麼如果你函式裡面

void foo(int*& ptr)

這樣呼叫過之後,pvalue就變成了null。而第一種情況pvalue是不能被改變的。

引用是c++帶來的很重要乙個特性,他在很多情況下避免了使用指標。而且,在c++裡面,引用是不可以捏造的,比如c你可以很容易弄乙個null的指標,而引用這不存在null引用。

上面的foo函式如果要用c來實現,則必須用指標的指標:

void foo(int** ***r)

呼叫的時候要foo(&pvalue)

這種技術很多用在比如定義乙個安全刪除指標的函式,所謂安全就是,只有當指標為零的時候才執行刪除,刪除之後,立刻把指標賦值為null。

template

inline safe_delete(t*& ptr)

}在c++裡面,能不用指標都應該盡量避免,stl裡面就大量使用引用。

3樓:

樓上答非所問。

*a的「a」是指標變數,其內容是位址,*&a的「a」是變數a或a陣列的首位元組,其內容是資料。

4樓:匿名使用者

;iostream>

using namespace std;

void swap(int a,int b)main()

main()

引用可以看作是乙個變數的別名,使用 引用 時 ,對於void swap(int a,int b) 編譯器並沒有給形參a,b分配新的記憶體空間,只是使 形參a,b指向了main函式中實參a,b的記憶體空間,他們共享同一內空間,即把位址給了形參。所以在void swap(int a,int b)函式中對這塊記憶體的改變也就改變了實參的值。

除了使用引用,也可以使用指標。

指標方式和引用方式都屬於傳址呼叫。

c++函式引數中的"&"號是什麼意思呢?

5樓:匿名使用者

在函式的宣告或定義中,形參帶'&'號,表示形參是該型別的引用型別。所謂引用是乙個變數的別名,這樣對形參的修改會反映在實參上。

比如要實現交換就可以用

void swap(int &a, int &b)在函式的呼叫中,實參帶'&'號,表示取位址運算,結果是乙個指向操作變數的指標。

6樓:匿名使用者

1取位址;

int i=1;

int pi=&i;

2位運算,表求按位與

int a=1,b=3;

int c=a&b;

3引用int a;

int &b=a;//b是a的引用,b等同於a這是 sun_siliang 的答案

7樓:匿名使用者

引用,即給乙個變數取別名,他們還是同乙個變數,就是比如a=0;呼叫 func(a);再函式裡面count++;函式結束後會改變a的值,a這時候等於1.建議去看c++ primer,經典必讀書籍

8樓:匿名使用者

int &count它有什麼功能,

這個函式

傳入的第二個引數是乙個函式位址的引用

count(root->lchild) //而這裡就是呼叫這個函式 目的應該是求根結點左孩子這邊的葉子結點數

9樓:匿名使用者

&本身是取位址符,這裡表示引用,就是建立count的乙個副本,函式中對count物件的修改不影響原傳入的實參

10樓:匿名使用者

引用,建立乙個count的複本,這樣就不會更改你傳遞進來的引數值了,當然如果你想改變的話的應該用指標:int func(int * count)

11樓:匿名使用者

取位址操作符,或者引用,

12樓:

引用 可以修改count

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

定義復為指 針,同時傳入制陣列長度 void func int array,int len 不過既然是c 一維陣列都建議用vector了 void func std vector array 在c c 中,在函式引數中,指標與陣列名是等同的。宣告函式引數時這樣 function int arg 在呼...

C怎麼把字元陣列當作函式引數傳遞

以指標方式或數bai組的方式都可以實du現引數傳遞zhi的,實際上都是將dao陣列的首位址傳遞專到子函式中去的。屬例如 include include void fun1 char pstr void fun2 char arr int main c 不能傳陣列,傳bai的是第乙個du陣列zhi元素...

c語言中怎麼用二維陣列作為函式引數

二維陣列作為函式引數,實參可以直接使用二維陣列名,在被呼叫函式中對形引數組定義可以指定所有維數的大小,也可以省略第一維的大 明,如 它們是合法且等價,也可以使用如下形式 但不能省略第二維的大小,如下面的定義是不合法的,編譯時會出錯 因為從實參傳遞來的是陣列的起始位址,如果在形參中不說明列數,編譯器將...