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...