国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【C/C++】 常量指針,指針常量、指向常量的常指針詳解

這篇具有很好參考價(jià)值的文章主要介紹了【C/C++】 常量指針,指針常量、指向常量的常指針詳解。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

什么是指針

指針就是指向變量在內(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

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

常量指針,c語言學(xué)習(xí),c++,c語言,數(shù)據(jù)結(jié)構(gòu),指針常量,常量指針

內(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 的縮寫,本意是不變的,不易改變的意思

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

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

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

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

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

比方說:

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)?code>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;  //錯(cuò)誤,指向的內(nèi)存地址不可以修改

箭頭是指針指向的內(nèi)存值,是不可以修改的,但是指向的內(nèi)存地址中的數(shù)據(jù)可以修改
常量指針,c語言學(xué)習(xí),c++,c語言,數(shù)據(jù)結(jié)構(gòu),指針常量,常量指針

常量指針

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ù)要和之前的一致
常量指針,c語言學(xué)習(xí),c++,c語言,數(shù)據(jù)結(jié)構(gòu),指針常量,常量指針

指向常量的常指針

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)存地址不可以修改

常量指針,c語言學(xué)習(xí),c++,c語言,數(shù)據(jù)結(jié)構(gòu),指針常量,常量指針

空指針、野指針

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

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

//-------空指針-------//
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è)地址


常量指針,c語言學(xué)習(xí),c++,c語言,數(shù)據(jù)結(jié)構(gòu),指針常量,常量指針
常量指針,c語言學(xué)習(xí),c++,c語言,數(shù)據(jù)結(jié)構(gòu),指針常量,常量指針文章來源地址http://www.zghlxwxcb.cn/news/detail-635052.html

到了這里,關(guān)于【C/C++】 常量指針,指針常量、指向常量的常指針詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • C語言學(xué)習(xí)(二十五)---指針練習(xí)題(一)

    C語言學(xué)習(xí)(二十五)---指針練習(xí)題(一)

    在上一節(jié)內(nèi)容中,我們學(xué)習(xí)了 遞歸 與 冒泡排序法 的有關(guān)內(nèi)容,今天我們將繼續(xù)往下學(xué)習(xí),主要內(nèi)容為 指針練習(xí)題 ,好了,話不多說,開整?。?! 在之前的第18—22的內(nèi)容中,我們學(xué)習(xí)了 指針 的一系列內(nèi)容,今天我們對(duì)之前的 指針內(nèi)容進(jìn)行測(cè)試 ,在查看答案之前,請(qǐng)先自

    2024年02月10日
    瀏覽(25)
  • C語言指針入門學(xué)習(xí)、知識(shí)點(diǎn)梳理(四)

    本篇內(nèi)容:指針星號(hào)的三種含義以及指針在函數(shù)調(diào)用時(shí),與實(shí)參、形參的變量傳遞關(guān)系,如何通過被調(diào)函數(shù)修改主調(diào)函數(shù)普通變量的值。 傳送門: C語言指針入門學(xué)習(xí)、概念梳理(一) C語言指針入門學(xué)習(xí)、概念梳理(二) C語言指針入門學(xué)習(xí)、知識(shí)點(diǎn)梳理(三) C語言指針入門

    2024年02月09日
    瀏覽(32)
  • C語言-指針進(jìn)階-qsort函數(shù)的學(xué)習(xí)與模擬實(shí)現(xiàn)(9.3)

    C語言-指針進(jìn)階-qsort函數(shù)的學(xué)習(xí)與模擬實(shí)現(xiàn)(9.3)

    目錄 思維導(dǎo)圖: 回調(diào)函數(shù) qsort函數(shù)介紹 模擬實(shí)現(xiàn)qsort 寫在最后: 什么是回調(diào)函數(shù)? 回調(diào)函數(shù)是一個(gè)通過函數(shù)指針調(diào)用的函數(shù)。 將一個(gè)函數(shù)指針作為參數(shù)傳遞給一個(gè)函數(shù),當(dāng)這個(gè)指針被用來調(diào)用所指向函數(shù)時(shí), 我們就將此稱為回調(diào)函數(shù)。 在舉例之前,我們先學(xué)習(xí)一個(gè)C語言

    2024年02月15日
    瀏覽(19)
  • C語言:指向數(shù)組的指針和指向數(shù)組首元素的指針

    相關(guān)閱讀 C語言 https://blog.csdn.net/weixin_45791458/category_12423166.html?spm=1001.2014.3001.5482 ? ? ? ? 指向數(shù)組的指針和指向數(shù)組首元素的指針常常被混淆,或者籠統(tǒng)地被稱為數(shù)組指針,但它們之間是有差別的,本文就將對(duì)此進(jìn)行討論。 ? ? ? ? 下面的代碼首先創(chuàng)建了一個(gè)數(shù)組,然后創(chuàng)

    2024年02月02日
    瀏覽(23)
  • C/C++|物聯(lián)網(wǎng)開發(fā)入門+項(xiàng)目實(shí)戰(zhàn)|指針|嵌入式C語言高級(jí)|C語言內(nèi)存空間的使用-學(xué)習(xí)筆記(9)

    C/C++|物聯(lián)網(wǎng)開發(fā)入門+項(xiàng)目實(shí)戰(zhàn)|指針|嵌入式C語言高級(jí)|C語言內(nèi)存空間的使用-學(xué)習(xí)筆記(9)

    參考: 麥子學(xué)院-嵌入式C語言高級(jí)-內(nèi)存空間 內(nèi)存類型資源地址、門牌號(hào)的代名詞 指針:地址的代名詞 指針變量:存放指針這個(gè)概念的盒子 *P char *p *p; C語言娟譯器對(duì)指針這個(gè)特殊的概念,有2個(gè)疑問? 1、分配一個(gè)盒子,盒子要多大? 在32bit系統(tǒng)中,指針就4個(gè)字節(jié) 2、盤子里存放

    2023年04月22日
    瀏覽(104)
  • C語言指針操作(六)指向函數(shù)的指針

    C語言指針操作(六)指向函數(shù)的指針

    指向函數(shù)的指針詳解,以及如何使用指向函數(shù)的指針變量做函數(shù)參數(shù) 指向函數(shù)的指針作為函數(shù)參數(shù),是 C 語言實(shí)際應(yīng)用中的一個(gè)比較深入的部分。 目錄 一、什么是函數(shù)的指針 二、用函數(shù)指著變量調(diào)用函數(shù) 2.1舉例說明 三、怎樣定義和使用指向函數(shù)的指針變量 3.1定義指向函數(shù)

    2024年02月05日
    瀏覽(27)
  • c語言中指針常量和常量指針

    指針常量(Pointer to Constant)和常量指針(Constant Pointer)是C和C++中用于描述指針和常量的組合概念。 指針常量本質(zhì)是一個(gè)常量,它的值不能改變,即指針始終指向同一個(gè)地址。但通過指針可以修改所指向?qū)ο蟮闹怠?int* const ptr;//表示ptr是一個(gè)指針常量,指向一個(gè)整型常量對(duì)

    2024年02月10日
    瀏覽(19)
  • 8.5 【C語言】指向函數(shù)的指針

    每次調(diào)用函數(shù)時(shí)都從該地址入口開始執(zhí)行此段函數(shù)代碼。函數(shù)名代表函數(shù)的起始地址。 例8.22 用函數(shù)求整數(shù)a和b中的大者 解題思路:在主函數(shù)調(diào)用max函數(shù),除了可以通過函數(shù)名調(diào)用外,還可以通過指向函數(shù)的指針變量來實(shí)現(xiàn)。 (2)通過指針變量調(diào)用它所指向的函數(shù) 類型名(

    2024年02月11日
    瀏覽(17)
  • c語言學(xué)習(xí)詳解

    c語言學(xué)習(xí)詳解

    C語言是一種用于和計(jì)算機(jī)交流的高級(jí)語言, 它既具有高級(jí)語言的特點(diǎn),又具有匯編語言的特點(diǎn) 非常接近自然語言 程序的執(zhí)行效率非常高 C語言是所有編程語言中的經(jīng)典,很多高級(jí)語言都是從C語言中衍生出來的, 例如:C++、C#、Object-C、Java、Go等等 C語言是所有編程語言中的經(jīng)典

    2024年02月14日
    瀏覽(18)
  • 8.8 【C語言】動(dòng)態(tài)內(nèi)存分配與指向它的指針變量

    棧:全局變量和局部變量,全局變量是分配在內(nèi)存中的靜態(tài)存儲(chǔ)區(qū)的,非靜態(tài)的局部變量是分配在內(nèi)存中的動(dòng)態(tài)存儲(chǔ)區(qū)的。 堆:數(shù)據(jù)臨時(shí)存放在一個(gè)特別的自由存儲(chǔ)區(qū)。 對(duì)內(nèi)存的動(dòng)態(tài)分配是通過系統(tǒng)提供的庫函數(shù)來實(shí)現(xiàn)的,主要有malloc,calloc,free,realloc這四個(gè)函數(shù)。 1.用mallo

    2024年02月11日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包