C 引數傳遞 01

2022-04-23 02:51:21 字數 1870 閱讀 3591

*是取值運算子,對位址使用可以獲得位址中儲存的數值;對於指標a,*a表示取a中的值

&是位址運算子,對變數使用可以獲得該變數的位址。 對於變數b,*b表示取b的位址

別名(引用):主要用於做函式的形式引數。

引用是復合型別,通過在變數前新增&符號來定義。不能定義引用型別的引用!!除了作為形參,定義引用時必須初始化!!如:

int ival= 1024

;int&ref =ival;

int&ref1; error 未關聯

int&ref2 = 10

; error,必須關聯到乙個物件

ps:不能將引用再繫結到另乙個物件!!

const引用是指向const物件的引用,可以讀取但不能修改const引用。

constint ival = 1024

;int i =10

;constint &ref =ival;

constint &r = 42; right!不同於普通引用!

constint &r2 = r+i; right!不同於普通引用!

int&ref2 = ival; error!普通引用!

非const引用只能繫結到與該引用同型別的物件。

doubledval = 3.14

;int&ri =dval;

上述**會被編譯器解釋為:

doubledval = 3.14

;int temp=dval;

int&ri =temp;

所以改變ri不會修改dval,而是修改了temp。所以建議給ri加上const,即const

int &ri=dval;

引數傳遞分為:值傳遞,指標傳遞,引用傳遞
#include "stdafx.h"#include
using

namespace

std;

//值傳遞

void swap1(int p,int q) //

傳過來的引數複製乙份副本,所以造作對傳過來的引數沒有影響

//很明顯,交換失敗

//指標傳遞,函式體內只有指標值的變化

void swap2(int *p,int *q) //

把指標存的是位址,所以呼叫時要傳物件的位址

//交換成功,實際是對指標指向位址的值的操作,p和q的指標並沒有改變

//指標傳遞,函式體內只有指標的變化

void swap3(int *p,int *q)

//交換失敗,雖然p=2,q=1.但是只是把p和q的指標值改變了,即p指向b,q指向a了,實際上a和b的值並沒有改變

//引用傳遞,這時函式並沒有對形參物件初始化,即沒有指定形參物件是哪個物件的別名。

//在函式呼叫時,實參物件名傳給形參物件名,形參物件名就成為實參物件名的別名。

//實參物件和形參物件代表同乙個物件,所以改變形參物件的值就是改變實參物件的值。  

//實際上,在虛實結合時是把實參物件的位址傳給形參物件,使形參物件的位址取實參物件的位址,從而使形參物件和實參物件共享同乙個單元。這就是位址傳遞方式。  

//通過使用引用引數,乙個函式可以修改另外乙個函式內的變數。因為引用物件不是乙個獨立的物件,不單獨占用記憶體單元,而物件指標要另外開闢記憶體單元(其內容是位址),所以傳引用比傳指標更好。  

//注意:雖然系統向形參傳遞的是實參的位址而不是實參的值,但實參必須使用物件名。

void swap4(int &p,int &q) //

引用傳遞時,對形參的操作等同於對實參的操作,即傳遞的不會是實參的副本,而就是實參

intmain()

c 引數傳遞

引數型別分為int,ref,out三種,預設為int.int型別在字方法中修改了對應變數後,主方法中的值不會發生變化.ref型別在方法中修改了對應變化後,主方法中的值也會發生變化.out主方法中對應的變數不需要初始化.例子 using system using system.collections....

C 引數傳遞

2.指標與引用區別 3.引數為指標的指標或指標的引用 將實參複製乙份給形參,形參為函式的區域性變數,因此函式對形參操作對實參沒有影響。若傳遞物件會產生物件副本,會呼叫拷貝建構函式,操作完後要呼叫析構函式。形參為指向實參位址的指標,其也算一種按值傳遞,只不過是將實參的位址作為引數傳遞給形參,因此函式對...

c 引數傳遞

引數傳遞 形參 parameter 和實參 argument int num int a,int b int num int a,int b 在函式的宣告或者定義裡,由由0個或多個形參組成的列表。intmain 形參的型別決定了形參實參互動的方式,如形參是引用型別,他將繫結到對應的實參上,引用形參是...