一、const修飾符
C++中 const允許指定一個語意約束,編譯器會強制實施這個約束,允許程式員告訴編譯器某值是保持不變的,如果在編程中確實有某個值保持不變,就應該明確使用const,這樣可以獲得編譯器的幫助,
const int a = 7; //const 修飾的變數a是不可改變的 int b = a; // 正確 a = 8; // 錯誤,不能改變
a被定義為一個常量,并且可以將 a 賦值給 b,但是不能給 a 再次賦值,對一個常量賦值是違法的事情,因為 a 被編譯器認為是一個常量,其值不允許修改,
二、指標
1、指標是一個變數,其值為另一個變數的地址,即,記憶體位置的直接地址,就像其他變數或常量一樣,您必須在使用指標存盤其他變數地址之前,對其進行宣告,記憶體有兩個基本屬性:一是地址,二是資料,對于“int *p;”,p是地址,“*p”是資料
int m=10; int *p=&m;// *表示p是一個指標變數 cout << p <<endl;//0x61ff08 cout << *p<<endl;// 10

2、動態分配記憶體
在C語言中,動態分配記憶體用 malloc() 函式,釋放記憶體用 free() 函式;在C++中,這兩個函式仍然可以使用,但是C++又新增了兩個關鍵字,new 和 delete:new 用來動態分配記憶體,delete 用來釋放記憶體,
int *p = new int; //分配1個int型的記憶體空間(new 運算子會根據后面的資料型別來推斷所需空間的大小,) delete p; //釋放記憶體
int *p = new int; cout << sizeof(p)<<endl; //4 sizeof() 輸出申請空間的大小

如果希望分配一組連續的資料,可以使用 new[]:
int *p = new int[10]; //分配10個int型的記憶體空間 delete[] p;// 用 new[] 分配的記憶體需要用 delete[] 釋放,它們是一一對應的,
C++語言不允許定義元素個數不確定的陣列,例如:int n ; int a[n];
三、指標與常量
1、常量指標 ,指標的指向可以修改,但是指標指向的值不能修改
int a=10; const int *p=&a;//常量指標 ,指標的指向可以修改,但是指標指向的值不能修改 *p=20;//錯誤 (指標指向的值不能修改) int b=30; p=&b;//正確(指標的指向可以修改)
2、指標常量:指標的指向不可以修改,但是指標指向的值可以修改
int a=10; int * const p=&a;//指標常量 ,指標的指向可以修改,但是指標指向的值不能修改 *p=20;//正確 (指標指向的值能修改) int b=30; p=&b;//錯誤(指標的指向不可以修改)
3、const 修飾既修飾指標也修飾常量 :指標的指向不可以修改,指標指向的值也不能修改
int a=10; const int * const p=&a;// ,指標的指向不可以修改,指標指向的值也不能修改 *p=40;//錯誤(指標指向的值也不能修改) int b=90; p=&b;// 錯誤(指標的指向不可以修改)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/24310.html
標籤:C++
