欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

什么是指針

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

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

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

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

在這里插入圖片描述

內(nèi)存地址

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

指針所占內(nèi)存

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

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

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

const 變量

const 是 constant 的縮寫,本意是不變的,不易改變的意思

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

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

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

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

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

比方說:

int * const p =&a;

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

const int *p=&a;

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

是不是很好記憶

指針常量

int * const p =&a;

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

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

也就是const限制的是指針p的值,但是沒有限定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;  //錯誤,指向的內(nèi)存地址不可以修改

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

在這里插入圖片描述

常量指針

const int *p=&a;

特點: 指針的指向可以修改,但是指針指向的值不可以修改。

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

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

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

在這里插入圖片描述

指向常量的常指針

const int const *p=&a;

特點: 指針的指向不可以修改,指針指向的值也不可以修改。

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

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

在這里插入圖片描述

空指針、野指針

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

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

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

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

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

請?zhí)砑訄D片描述

總結(jié)

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

相關(guān)文章

  • C語言學(xué)生成績管理系統(tǒng)設(shè)計

    C語言學(xué)生成績管理系統(tǒng)設(shè)計

    這篇文章主要為大家詳細介紹了C語言學(xué)生成績管理系統(tǒng)設(shè)計,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • C++使用cuBLAS加速矩陣乘法運算的實現(xiàn)代碼

    C++使用cuBLAS加速矩陣乘法運算的實現(xiàn)代碼

    這篇文章主要介紹了C++使用cuBLAS加速矩陣乘法運算,將cuBLAS庫的乘法運算進行了封裝,方便了算法調(diào)用,具體實現(xiàn)代碼跟隨小編一起看看吧
    2021-09-09
  • 詳解C++編程中類的成員變量和成員函數(shù)的相關(guān)知識

    詳解C++編程中類的成員變量和成員函數(shù)的相關(guān)知識

    這篇文章主要介紹了C++編程中類的成員變量和成員函數(shù)的相關(guān)知識,是C++入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-09-09
  • C語言測試n的階乘和x的n次方

    C語言測試n的階乘和x的n次方

    今天小編就為大家分享一篇關(guān)于C語言測試n的階乘和x的n次方,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • Java?C++題解leetcode1598文件夾操作日志搜集器

    Java?C++題解leetcode1598文件夾操作日志搜集器

    這篇文章主要為大家介紹了Java?C++題解leetcode1598文件夾操作日志搜集器示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • 一起來看看C++STL容器之string類

    一起來看看C++STL容器之string類

    這篇文章主要為大家詳細介紹了C++STL容器之string類,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • C/C++動態(tài)分配與釋放內(nèi)存的區(qū)別詳細解析

    C/C++動態(tài)分配與釋放內(nèi)存的區(qū)別詳細解析

    以下是對C與C++中動態(tài)分配與釋放內(nèi)存的區(qū)別進行了詳細的分析介紹,需要的朋友可以過來參考下
    2013-09-09
  • C語言實現(xiàn)考試報名管理系統(tǒng)

    C語言實現(xiàn)考試報名管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)考試報名管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C++類中變量也可以是引用的代碼實例

    C++類中變量也可以是引用的代碼實例

    今天小編就為大家分享一篇關(guān)于C++類中變量也可以是引用的代碼實例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • c語言的形參和實參傳遞的區(qū)別詳解

    c語言的形參和實參傳遞的區(qū)別詳解

    這篇文章主要介紹了c語言的形參和實參傳遞的區(qū)別詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02

最新評論