指針常量,常指針,指向常量的常指針


1.指針常量

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

int*  —— const p

特點是指針指向的數值可以改變,然而指針所保存的地址卻不可以改變

 

#include <iostream>
using namespace std;

void main()
{

 int a = 10;
 int const *p = &a;
 cout<<a<<endl;
 cout<<*p<<endl;
    int b = 20;
}

我們可以改變指針變量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的指向地址具有不確定性,故而稱作迷途指針,避免的方法是將指針初始化為空指針。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM