最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++常量指針,指針常量,指向常量的常指針詳解

 更新時(shí)間:2021年10月18日 14:26:33   作者:Z小旋  
剛接觸到指針時(shí),關(guān)于C++常量指針,指針常量,指向常量的常指針容易混淆,所以整理下,希望能夠幫助自己也幫助到大家

什么是指針

指針就是指向變量在內(nèi)存中的地址

數(shù)據(jù)是存放在內(nèi)存中的,每一個(gè)變量都有一個(gè)內(nèi)存地址,假設(shè)是一個(gè)int類型變量a,占4個(gè)字節(jié)的內(nèi)存區(qū),那么在內(nèi)存中如果是小端方式存儲(chǔ),我們創(chuàng)建指針p,把a(bǔ)的地址賦值給p,就是把a(bǔ)的首地址0x1100賦值給指針p,這個(gè)時(shí)候p的值就是變量a在內(nèi)存中的首地址

int a =10;
int*p;
p=&a; //把a(bǔ)的首地址賦值給P

也就是說(shuō)指針的值是這塊內(nèi)存區(qū)域的首地址

在這里插入圖片描述

內(nèi)存地址

內(nèi)存是一個(gè)很大的,線性的字節(jié)數(shù)組,每一個(gè)字節(jié)都是固定8個(gè)二進(jìn)制位組成,計(jì)算機(jī)對(duì)每個(gè)內(nèi)存單元都進(jìn)行了編號(hào),這個(gè)編號(hào)就稱為內(nèi)存地址,地址決定了內(nèi)存單元在內(nèi)存中的位置

指針?biāo)純?nèi)存

32位系統(tǒng)中,處理器一次能處理的最大位數(shù)是2的32次方 ,也就是一次處理4個(gè)字節(jié)的內(nèi)存數(shù)據(jù),哪么指針的長(zhǎng)度也就是4個(gè)字節(jié)。

64位系統(tǒng)中,處理器一次能處理的最大位數(shù)是2的64次方 ,也就是一次處理8個(gè)字節(jié)的內(nèi)存數(shù)據(jù),哪么指針的長(zhǎng)度也就是8個(gè)字節(jié)。

32位系統(tǒng)指針4個(gè)字節(jié) 64位系統(tǒng)8個(gè)字節(jié)

const 變量

const 是 constant 的縮寫(xiě),本意是不變的,不易改變的意思

也就是說(shuō)使用const修飾的變量,其值是不允許改變的

const int  a = 7; 
int  b = a; // 正確
a = 8;       // 錯(cuò)誤,不能改變

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

在了解了上面的基礎(chǔ)知識(shí)之后,我們來(lái)看一下什么是指針常量,常量指針和指向常量的指針

首先說(shuō)一下怎么快速的記住他們的區(qū)別,只需要按照命名的順序來(lái)讀,就可以很好地記憶

比方說(shuō):

int * const p =&a;

首先是一個(gè)指針int * , 然后一個(gè)const常量 那么p就是指針常量

const int *p=&a;

首先是一個(gè)const常量, 然后一個(gè)指針int * 那么p就是常量指針

是不是很好記憶

指針常量

int * const p =&a;

特點(diǎn):指針的指向不可以修改,指針指向的內(nèi)存的值可以修改

因?yàn)閏onst的功能就是限定不可以修改,所以我們看到指針常量是先有了int *指針,再有的const修飾p 所以p的值(指向的內(nèi)存地址) 是不可以修改的

也就是const限制的是指針p的值,但是沒(méi)有限定p指向的內(nèi)存地址里的數(shù)據(jù),所以內(nèi)存的數(shù)據(jù)可以修改

舉例:

int a=10;
int * const p =&a;  //定義指針常量,指向int a的地址
*p = 20; //正確,指向的內(nèi)存地址中的數(shù)據(jù)可以修改   
p=&b;  //錯(cuò)誤,指向的內(nèi)存地址不可以修改

箭頭是指針指向的內(nèi)存值,是不可以修改的,但是指向的內(nèi)存地址中的數(shù)據(jù)可以修改

在這里插入圖片描述

常量指針

const int *p=&a;

特點(diǎn): 指針的指向可以修改,但是指針指向的值不可以修改。

常量指針,首先要是常量。就是指向的值要是一個(gè)常量,但是指向的內(nèi)存地址不做限制

int a=10;
int b=10;
const int *p=&a;  //定義常量指針,指向int a的地址
*p = 20; //錯(cuò)誤,指向的內(nèi)存地址中的數(shù)據(jù)不可以修改   
p=&b;  //正確,指向的內(nèi)存地址可以修改

箭頭是指針指向的內(nèi)存值,是可以修改的,但是指向的內(nèi)存地址中的數(shù)據(jù)要和之前的一致

在這里插入圖片描述

指向常量的常指針

const int const *p=&a;

特點(diǎn): 指針的指向不可以修改,指針指向的值也不可以修改。

兩個(gè)const限制,一旦指向之后就不可以做修改了

int a=10;
int b=10;
const int const *p=&a;  //定義指針常量,指向int a的地址
*p = 20; //錯(cuò)誤,指向的內(nèi)存地址中的數(shù)據(jù)不可以修改   
 p=&b;  //錯(cuò)誤,指向的內(nèi)存地址不可以修改

在這里插入圖片描述

空指針、野指針

空指針就是指向地址為空的指針

注意:空指針指向的內(nèi)存是不可以訪問(wèn)的

//-------空指針-------//
int *p4 = NULL;
//cout << *p4 << endl; //運(yùn)行Error,使用指針時(shí)必須先判斷是否空指針

野指針是指針指向了一個(gè)隨意的內(nèi)存地址,如果使用,會(huì)造成不可預(yù)知的內(nèi)存錯(cuò)誤

//-------野指針(懸浮、迷途指針)-------//
int *p5 =0x1100;  //任意賦值的野指針
//cout << *p5 << endl; //運(yùn)行Error
int *p6 = new int(5);
delete p6;  //刪除p6的指向
p6 = NULL; //一定要有這一步,否則p6會(huì)隨機(jī)的指向一個(gè)地址

請(qǐng)?zhí)砑訄D片描述

總結(jié)

本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • 用C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單掃雷小游戲

    用C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單掃雷小游戲

    這篇文章主要為大家詳細(xì)介紹了用C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單掃雷小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C語(yǔ)言實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)(文件版)

    C語(yǔ)言實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)(文件版)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)學(xué)生信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • 基于Qt實(shí)現(xiàn)簡(jiǎn)易GIF播放器的示例代碼

    基于Qt實(shí)現(xiàn)簡(jiǎn)易GIF播放器的示例代碼

    這篇文章主要介紹了如何利用Qt設(shè)計(jì)一個(gè)簡(jiǎn)易GIF播放器,可以播放GIF動(dòng)畫(huà)。其基本功能有載入文件、播放、暫停、停止、快進(jìn)和快退,感興趣的可以了解一下
    2022-06-06
  • C++插件化 NDD源碼的插件機(jī)制實(shí)現(xiàn)解析

    C++插件化 NDD源碼的插件機(jī)制實(shí)現(xiàn)解析

    這篇文章主要介紹了C++插件化 NDD源碼的插件機(jī)制實(shí)現(xiàn)解析,這里再介紹推薦下優(yōu)秀的國(guó)產(chǎn)軟件開(kāi)源項(xiàng)目?NDD(notepad--),一個(gè)支持windows/linux/mac的文本編輯器,目標(biāo)是要國(guó)產(chǎn)替換同類軟件,需要的朋友可以參考下
    2023-03-03
  • C++使用MySQL-Connector/C++連接MySQL出現(xiàn)LNK2019錯(cuò)誤的解決方法

    C++使用MySQL-Connector/C++連接MySQL出現(xiàn)LNK2019錯(cuò)誤的解決方法

    這篇文章主要介紹了C++使用MySQL-Connector/C++連接MySQL出現(xiàn)LNK2019錯(cuò)誤的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • qt實(shí)現(xiàn)倒計(jì)時(shí)示例

    qt實(shí)現(xiàn)倒計(jì)時(shí)示例

    這篇文章主要介紹了qt實(shí)現(xiàn)倒計(jì)時(shí)示例,需要的朋友可以參考下
    2014-05-05
  • 解讀C++為何迭代器常用auto類型

    解讀C++為何迭代器常用auto類型

    C++中迭代器類型復(fù)雜且多變,auto關(guān)鍵字自動(dòng)推導(dǎo)類型,簡(jiǎn)化代碼、提升效率,減少類型錯(cuò)誤,符合現(xiàn)代編程趨勢(shì),是遍歷容器的標(biāo)準(zhǔn)做法
    2025-09-09
  • 詳解C++ sizeof(上)

    詳解C++ sizeof(上)

    這篇文章主要介紹了C++ sizeof的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)c++,感興趣的朋友可以了解下
    2020-08-08
  • C++進(jìn)程的創(chuàng)建和進(jìn)程ID標(biāo)識(shí)詳細(xì)介紹

    C++進(jìn)程的創(chuàng)建和進(jìn)程ID標(biāo)識(shí)詳細(xì)介紹

    傳統(tǒng)的C++(C++98)中并沒(méi)有引入線程這個(gè)概念。linux和unix操作系統(tǒng)的設(shè)計(jì)采用的是多進(jìn)程,進(jìn)程間的通信十分方便,同時(shí)進(jìn)程之間互相有著獨(dú)立的空間,不會(huì)污染其他進(jìn)程的數(shù)據(jù),天然的隔離性給程序的穩(wěn)定性帶來(lái)了很大的保障
    2022-08-08
  • C++中實(shí)現(xiàn)子進(jìn)程執(zhí)行和管道通信詳解

    C++中實(shí)現(xiàn)子進(jìn)程執(zhí)行和管道通信詳解

    在這篇博客中,我們將深入探索如何在 C++ 程序中實(shí)現(xiàn)子進(jìn)程的創(chuàng)建與執(zhí)行,以及父子進(jìn)程間的管道通信,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-01-01

最新評(píng)論

平果县| 正宁县| 临桂县| 吐鲁番市| 永靖县| 上饶县| 长治市| 岗巴县| 双辽市| 武城县| 芒康县| 安义县| 晋江市| 永康市| 和林格尔县| 武夷山市| 海宁市| 达拉特旗| 禹州市| 嘉禾县| 武定县| 孟津县| 城口县| 新巴尔虎左旗| 六枝特区| 普安县| 大石桥市| 酉阳| 乌鲁木齐市| 沈丘县| 和田市| 东山县| 雷山县| 青州市| 双柏县| 石楼县| 景德镇市| 石河子市| 内江市| 万安县| 昂仁县|