函式的傳值

2021-08-16 08:43:49 字數 1282 閱讀 5368

函式在我看來最主要在於函式引數的傳遞,其餘的與正常程式設計無太大差別

函式引數傳值方式:

1.傳數值

2.傳位址

3.引用

引用:型別名 &引用名=變數名

相當於乙個變數的別名

int n=4;

int &r=n;                                  //&在宣告變數語句中作為引用

r=4;

coutcout<

引用例子

void swap(int &a,int &b)            //此處形參為引用

int tmp;

tmp=a;

a=b;

b=tmp;

int main()

int n1,n2;

cin>>n1>>n2;

swap(n1,n2);

cout<

指標變數

內容為位址,指向位址存放的變數為目標變數。

定義方法

型別識別符號 *變數名;

int i;                        //此時系統分配位址儲存i

&i;                          //&在正常語句中為取址符

int *i_point,*j_point;    //定義方法,*為定義指標

int *i_point=&i;            //定義並賦初值的簡單方法(比較方便)

*i_point=3;                   //*為取內容運算

指標變數的值一定為位址,位址內的目標變數一定與型別識別符號相同。(與不同變數所佔位元組有關)

絕對不能對未賦值的指標變數作「取內容」運算。(此時指標變數內位址隨機,可能損害記憶體)

對指標變數取內容運算對值的修改會影響目標變數的值,如:

int i,*p;

p=&i;

*p=10;

cout<

分清取位址,取內容,定義指標,引用,即可對指標變數、引用熟練操作。

指標運算

int a[4];int *p=a;p++;                   //此時指標p為陣列a首位址也就是a[0]的位址

//p++相當於p指向的位址先後加相應型別大小的空間之後的位置

//要求p++之後的位址與定義時變數型別相同

指標與陣列

int a[4];

int  *p=a;         

指標傳遞函式引數

void swap(int *p1,int *p2)

函式傳值傳參

var obj function x 內部宣告的變數不會影響外面的obj物件 console.log obj.n 2 obj 傳入的是乙個指標 值 x是obj指標的副本,兩者都指向同乙個物件 console.log obj.n 3 例子二 var x 1 function a x a x conso...

函式的傳值與傳址

這裡介紹一下,函式引數傳遞方式 傳值與傳址.希望看過後,大家對函式的了解更深刻.一 傳址方式 傳址方式是通過引用來實現在。還是我的習慣,用事實說話。看下面例子。例1 程式開始 fun1 int a,int b 這裡告訴編譯器,這個函式是傳址的,不是傳值的,所以所引用的引數在函式退出後值會改變 inc...

函式的引數傳值

函式的引數傳值主要分為 傳值引數,傳引用引數。1.傳值引數 當初始化乙個費引用型別的變數時,初始值被拷貝給變數。此時,對變數的改動不會改變和影響初值。int a 1 int b 2 swap a,b 則不能交換他們的值。但當時指標傳值時 指標傳值的行為和非引用型別傳值一樣,當執行指標拷貝時,拷貝的是...