符號有三種用法

2021-06-20 10:58:26 字數 1495 閱讀 4224

1、型別&變數名,表示引用。

2、資料&資料,表示按位相與。

3、&變數名,表示位址。

區分的地方:

1)引用在賦值=的左邊,而取位址在賦值的右邊,比如

int a=3;

int &b=a;        //引用

int *p=&a;        //取位址

2)和型別在一起的是引用,和變數在一起的是取址。 舉例同樣如上,還有下例:

int function(int &i)

//引用

由於自己不太能理解指標變數的引用

1.在可以用引用的情況下,不要用指標;

2.引用不允許重新賦值.,當使用乙個變數指向不同的物件時,必須用指標;

3.引用不允許為空,當存在物件為空時,必須使用指標。

下面的可以好好體會體會,那麼你將會受益匪淺的哦!

(1) double & rr=1; 等價與 double temp; temp=double(1); double & rr=temp;

(2) int *a; int * & p=a; int b=8; p=&b; //正確,指標變數的引用(由於自己不太能理解

指標變數的引用)

void & a=3; //不正確,沒有變數或物件的型別是void

int & ri=null; //不正確,有空指標,無空引用

(3) int & ra=int; //不正確,不能用型別來初始化

int *p=new int; int & r=*p; //正確

(4) 引用不同於一般變數,下面型別宣告是非法的:

int &b[3]; //不能建立引用陣列

int & *p; //不能建立指向引用的指標

int &&r; //不能建立引用的引用

(5) 當使用&運算子取乙個引用的位址時,其值為所引用變數的位址, 

1 **

#include using namespace std;

void freeptr1(int* p1)

void freeptr2(int*& p2)

void main()

思考:在freeptr1和freeptr2 的比較中,你能發現它們的不同點嗎?

2 對**進行解釋

#include using namespace std;

void freeptr1(int* p1)

void freeptr2(int*& p2)

void main()

3 指標引用的經典用法

#include using namespace std;

void all1(int **p)

void all2(int*& p)

void main()

{ int *a1;

all1(&a1);

*a1 = 1;

cout<<*a1<

java this 三種用法

public class thisdemo class student override public string tostring 列印結果 student name null,age 0 賦值沒有成功,說明 name 區域性變數 name 區域性變數 而不是name 成員變數 name 區域性...

c new三種用法

前幾天去家公司面試,有一道這樣的題 寫出c 中new關鍵字的三種用法,思前想後挖空心思也只想出了兩種用法,回來查了下msdn,還真是有第三種用法 用於在泛型宣告中約束可能用作型別引數的引數的型別,這是在framework 2.0 中定義泛行時才會使用到的,自己對c 2.0 中的支援還只是粗通皮毛,怪...

c using 三種用法

1.using指令。using 命名空間名字,這樣可以在程式中直接用命令空間中的型別,而不必指定型別的詳細命名空間。這個功能也是最常用的,幾乎每個cs的程式都會用到。例如 using system 一般都會出現在 cs中。2.using別名。using 別名 包括詳細命名空間資訊的具體的型別。這種做...