指標常量,常指標,指向常量的常指標

2021-09-08 02:37:50 字數 946 閱讀 6565

1.指標常量

從字面意思可以看出,指標是乙個常量,也就是位址不能被修改。

int*  —— const p

特點是指標指向的數值可以改變,然而指標所儲存的位址卻不可以改變。

#include

using namespace std;

void main()

{int a = 10;

int const *p = &a;

cout《我們可以改變指標變數p所指向的內容,而不能改變p的位址空間,如 新增上p = &b;我們就會發現編譯錯誤!

2.指向常量的指標

const ——int*p

特點是指標所儲存的位址可以改變,然而指標所指向的值卻不可以改變。同理,當新增*p = b時,會發生編譯錯誤!

3.指向常量的常指標

const int const*p

特點是指標所儲存的位址不可變,指標所指向的數值也不可變

4.空指標

顧名思義,就是儲存位址為空的指標

int *p=0;   //此時的指標p就是乙個空指標

5.記憶體洩露

int *p=new int;

p=new int;

delete p;        //用delete來釋放剛剛申請的那塊記憶體區域,注意此時指標p還是可能依舊指向的這塊區域(注意可能二字)。

這樣就會有記憶體丟失,也就是所謂的記憶體洩漏。

因為第一行我們在堆中申請了一塊int型的區域,並且用指標p指向該空間。但是緊接著我們又在堆中申請了一塊int型的區域,用p指向了該空間。

那麼先前申請的那塊區域就無法訪問了,但同時這塊無法訪問的區域沒有被刪除。所以就造成了記憶體洩漏。

6.迷途指標

int *p=new int;   //在堆中申請一塊區域,用p指向這塊區域

所以此時指標p的指向位址具有不確定性,故而稱作迷途指標,避免的方法是將指標初始化為空指標。

指標常量,常指標,指向常量的常指標

1.指標常量 從字面意思可以看出,指標是乙個常量,也就是位址不能被修改。int const p 特點是指標指向的數值可以改變,然而指標所儲存的位址卻不可以改變。include using namespace std void main int a 10 int const p a cout 我們可以...

常指標 指向常量的指標與指向常量的常指標的區分

個人根據一些資料,簡要總結如下 include using namespace std int main 補充 1 constexpr變數簡介 在c 11新標準規定,允許將變數宣告為constexpr型別以便由編譯器來驗證變數的值是否是乙個常量表示式。宣告為constexpr的變數一定是乙個常量,而...

c 中指標常量,常指標,指向常量的常指標區分

const char myptr char a 指向常量的指標 char const myptr char a 常量的指標 const char const myptr char a 指向常量的常量指標 從字面意思可以看出,指標是乙個常量,也就是位址不能被修改。include using names...