在c語言中,const實際是乙個冒牌貨,例如,const int a=10;a是乙個唯讀的常量,通過指標可以繞過去
在c+中,通過const 修飾的東西,會變成什麼樣子?
1.const int a=10;放入符號表裡,始終從符號表裡拿資料,a變成真正意義上的常量10
keyvaluea10
c++裡面的符號表
1.通過**來理解
const int a;
int const b;
const int *c;
int * const d;
const int * const e ;
含義:
//第乙個第二個意思一樣 代表乙個常整形數
//第三個
c是乙個指向常整形數的指標
(所指向的記憶體資料不能被修改,但是本身可以修改
)//第四個
d常指標(指標變數不能被修改,但是它所指向記憶體空間可以被修改)
//第五個
e乙個指向常整形的常指標(指標和它所指向的記憶體空間,均不能被修改)
結論:c語言中的
const
變數:c語言中
const
變數是唯讀變數,有自己的儲存空間
c++中的
const
常量:可能分配儲存空間,也可能不分配儲存空間
當const常量為全域性,並且需要在其它檔案中使用
當使用&操作符取
const
常量的位址
符號表、編譯過程中若發現對const使用了
extern或者&
操作符,則給對應的常量分配儲存空間(相容c)
例子**:
int main()
c++中的
const
常量類似於巨集定義
const int c = 5; ≈
#define c 5
c++中的
const
常量在與巨集定義不同
const常量是由編譯器處理的,提供型別檢查和作用域檢查
巨集定義由預處理器處理,單純的文字替換
1、 引用是c++的概念,屬於
c++編譯器對
c的擴充套件
int main()
int a = 0;
int &b = a; //int * const b = &a
b = 11; //*b = 11;
return 0;
2. 普通引用有自己的空間嗎?//有
struct teacer {
int &a;
int &b;
int main()
printf("sizeof(teacher) %d\n", sizeof(teacer));
system("pause");
return 0;
3.當實參傳給形參引用的時候,只不過是
c++編譯器幫我們程式設計師手工取了乙個實參位址,傳給了形參引用(常量指標)
引用 const引用和非const引用
引用構造了物件的乙個同義詞,是c 物件的另乙個名字。在實際程式中,引用的主要作用是作函式的形參。引用是一種復合型別1,它通過在變數名前新增 來定義。在使用引用的情況下,每一種引用型別都關聯到某一其他型別。c 不能定義引用型別的引用,但是可以定義任何其他型別的引用。int a 100 int refa...
指標和引用,const 指標和const 引用
指標和引用是在使用中經常弄混淆的兩個概念。引用 reference 為物件起了另外乙個名字,用符號 表示。name,例如 int i 1024 int ref i 一般在初始化變數時,初始值會被拷貝到新建立的物件中,然而定義引用時,程式把引用和它的初始值繫結 bind 在一起,而不是將初始值拷貝給引...
const引用和普通引用
一 引用所繫結的型別和所引用的物件型別需嚴格匹配。除了兩個例外 1 普通引用必須繫結到物件,不能繫結到常量 int a 3 錯誤 2 const引用 1 初始化const引用允許用任意表示式,只要該表示式的結果能轉化為引用型別即可 2 允許乙個const引用繫結非常量物件,字面值,甚至是一般表示式 ...