C 引用注意!!

2021-08-17 05:03:42 字數 981 閱讀 5950

引用型別其實就是變數的別名,但是這個變數也是有要求的。

1.引用不是一種資料型別,不能建立指向引用型別的指標

2.可以建立指標變數的引用

int a = 3;

int *b= &a;//b是指向a的指標變數 另佔空間(存的是變數a的位址)

int* &p = b;//宣告並初始化指標b的引用

3.不能建立陣列的引用

char c[6] = "lichongxi";

char &rc[6] = c; //錯誤

因為陣列c只代表陣列的首位址,並不是乙個佔儲存空間的變數

有趣的const用法:

對引用加以const限制,即不允許改變改引用的值

int a = 3;

const int &b = a;

b = 5;//錯誤

a = 5; //正確!此時b的值也是5(引用是變數的別名)

這一特徵在使用引用作為函式形參是有用的!!即不允許在函式裡改變該變數的值!!

還有

int a = 6;

const &b = a+4;//編譯器會生成乙個臨時變數temp存放a+4的值,引用b就是該臨時變數的別名(相當於int temp = a+4; const int &b = temp;)

還可以「不同型別」的引用(要求相互轉換的型別)

double a = 3.1415926;

const int &b = a; //相當於 int temp = a; const int &b = temp;

注意C 和C 引用的區別

c 用多了,最近又回到c 程式設計。發現有些致命的區別,如果不注意,很可能導致一些莫名其妙的bug。引用型別就是其中乙個。在c 中,引用跟指標比較接近,除了值型別 int,float,struct等 其它型別都是引用型別。它本身是乙個棧上面的變數,指向堆上面的具體例項,可以隨意更改它指向的例項。而在...

c 中指標和引用注意點整理

int a 3 4 int p 4 a p a 2 這裡為什麼需要取位址符?c 中a 2 不就是下級陣列名嗎?為什麼還要取位址?根據這個問題,我發現了自己對指標和引用還有陣列實質的理解還是有點模糊,比如問題中提到的 a 2 不就是下級陣列名嗎?我沒法確切給出答案,因為我也不確定。這個問題下面討論會再...

《C 注意要點 第一講》c 引用簡介

一 引用簡介 引用就是某一變數 目標 的乙個別名,對引用的操作與對變數直接操作完全一樣。引用的宣告方法 型別識別符號 引用名 目標變數名 eg int a int b a 定義引用b,它是變數a的引用,即別名 說明 1 在此不是求位址運算,而是起標識作用。2 型別識別符號是指目標變數的型別。3 宣告...