哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C進(jìn)階技巧:二級(jí)指針問(wèn)題

Q4MP_gh_c472c21 ? 來(lái)源:最后一個(gè)bug ? 作者:bug菌 ? 2020-09-08 15:00 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1、先把問(wèn)題擺出來(lái)

參考Demo:

1#include 2#include 3 4/************************************ 5*Fuction:測(cè)試demo 6*Author:(公眾號(hào):最后一個(gè)bug) 7***********************************/ 8intmain(intargc,char*argv[]){ 9inta=10; 10int*ptr=&a; 11int**ptrptr=&ptr; 12 13printf("*ptr=%d ",*ptr); 14printf("**ptrptr=%d ",**ptrptr); 15printf("**((int**)ptr)=%d ",**((int**)ptr)); 16printf("歡迎關(guān)注公眾號(hào):最后一個(gè)bug "); 17return0; 18}

運(yùn)行結(jié)果:

現(xiàn)象描述:

大家可以看到當(dāng)試圖輸出**((int **)ptr)的時(shí)候程序奔潰了,其實(shí)在bug菌剛開(kāi)始學(xué)習(xí)C的時(shí)候也是遇到了這個(gè)問(wèn)題,最終理解清楚了就自然明白了。粗暴點(diǎn)就把((int **)ptr);*((int **)ptr);**((int **)ptr)都嘗試著打印出來(lái)分析分析。

所以bug菌在下面把指針的一些知識(shí)點(diǎn)都跟大家講解一下,形成系統(tǒng)的知識(shí),避免一些小伙伴僅學(xué)習(xí)了一些碎片而一知半解。

2、二級(jí)指針的使用

1

多級(jí)指針 其實(shí)多級(jí)指針在嵌入式程序中的應(yīng)用還是相對(duì)比較少的,超過(guò)3級(jí)的bug菌僅僅只在一個(gè)特殊的索引功能里面使用過(guò)。 這里重點(diǎn)看看一、二級(jí),畢竟二級(jí)指針與我們的二維數(shù)據(jù)結(jié)合使用,二維素組在圖形、矩陣、算法等等方面還是使用非常廣泛的。

2

一級(jí)指針 指針其實(shí)廣義的講它也是一種數(shù)據(jù)類(lèi)型,所以所謂的int* ptr;其中int* 就是變量ptr的類(lèi)型,那么ptr就是我們常說(shuō)的指針變量。

Demo:

1#include 2#include 3/************************************ 4*Fuction:測(cè)試demo 5*Author:(公眾號(hào):最后一個(gè)bug) 6***********************************/ 7intmain(intargc,char*argv[]){ 8inta=10; 9int*ptr=&a; 10 11printf("a=%d ",a); 12printf("&ptr=0x%X ",&ptr); 13printf("&a=0x%X ",&a); 14printf("ptr=0x%X ",ptr); 15printf("*ptr=%d ",*ptr); 16 17printf("歡迎關(guān)注公眾號(hào):最后一個(gè)bug "); 18return0; 19}

運(yùn)行結(jié)果:

圖解:

分析一下:

ptr既然是變量,變量存于內(nèi)存中,那么就一定有其地址,如上圖所示ptr位于0x28FEE8地址處,其中其ptr里面保存的就是藍(lán)色區(qū)域中的地址,也就是a變量所在的地址,所以&a與ptr是相等的。

*ptr就很好理解了,你可以把*ptr看成一個(gè)變量,其類(lèi)型為int,其變量位于ptr值所在的內(nèi)存地址處,即0x28FEEC處的int變量與定義的int a剛好一致。

3

二級(jí)指針 如果大家已經(jīng)理解了一級(jí)指針,二級(jí)指針也就順理成章了,來(lái)看看下面的小程序:

Demo:

1#include 2#include 3/************************************ 4*Fuction:測(cè)試demo 5*Author:(公眾號(hào):最后一個(gè)bug) 6***********************************/ 7intmain(intargc,char*argv[]){ 8inta=10; 9int*ptr=&a; 10int**ptrptr=&ptr; 11 12printf("a=%d ",a); 13 14printf("&ptrptr=0x%X ",&ptrptr); 15 16printf("ptrptr=0x%X ",ptrptr); 17printf("&*ptrptr=0x%X ",&*ptrptr); 18printf("&ptr=0x%X ",&ptr); 19 20printf("*ptrptr=0x%X ",*ptrptr); 21printf("ptr=0x%X ",ptr); 22 23printf("*ptr=%d ",*ptr); 24printf("**ptrptr=%d ",**ptrptr); 25 26printf("歡迎關(guān)注公眾號(hào):最后一個(gè)bug "); 27return0; 28}

運(yùn)行結(jié)果:

圖解:

分析一下:

通過(guò)上圖來(lái)看ptrptr也是一個(gè)變量,其類(lèi)型為int**,變量肯定有內(nèi)存,其地址就是0x28FEE4,其變量保存的值是0x28FEE8(即ptr的地址)。

那么*ptrptr,同樣跟一級(jí)指針一致,把*ptrptr看成一個(gè)變量,也就是在ptrptr的值0x28FEEC8地址處的一個(gè)int*類(lèi)型的變量,且該變量的值是0x28FEEC,其自身的地址為0x28FEE8。

同樣對(duì)于**ptrptr也看成變量,也就是*ptrptr的值0x28FEEC地址處的一個(gè)int類(lèi)型的變量,那么此時(shí)該變量與a是相等的。

最后在解釋一下&*ptrptr,由于*ptrptr一個(gè)變量,&*ptrptr表示該變量的地址即0x28FEE8,然而該值剛好也是ptrptr變量的值,所以&*ptrptr =ptrptr。

3、是時(shí)候解答前面的問(wèn)題了

參考Demo:

1#include 2#include 3 4/************************************ 5*Fuction:測(cè)試demo 6*Author:(公眾號(hào):最后一個(gè)bug) 7***********************************/ 8intmain(intargc,char*argv[]){ 9inta=10; 10int*ptr=&a; 11int**ptrptr=&ptr; 12 13printf("*ptr=%d ",*ptr); 14printf("**ptrptr=%d ",**ptrptr); 15printf("**((int**)ptr)=%d ",**((int**)ptr)); 16printf("歡迎關(guān)注公眾號(hào):最后一個(gè)bug "); 17return0; 18}

分析一下:

我們知道問(wèn)題出在**(int**)ptr,不太理解的小伙伴總是覺(jué)得,我已經(jīng)強(qiáng)制類(lèi)型轉(zhuǎn)化為二級(jí)指針了,前面只需要用**獲得最后的值即可,怎么就不行呢? 我知道這里有問(wèn)題我就是不理解為什么?

那我們一起通過(guò)前面的知識(shí)來(lái)分析分析。同樣把ptr看成是變量,變量的值并不會(huì)跟隨強(qiáng)制類(lèi)型而發(fā)生改變。強(qiáng)制類(lèi)型僅僅只是改變了獲取內(nèi)存中數(shù)據(jù)的方式,并沒(méi)有改變內(nèi)存中的數(shù)據(jù)。下面圖解一下:

所以本例子中對(duì)于強(qiáng)制類(lèi)型轉(zhuǎn)化中的**(int*****)ptr,無(wú)論強(qiáng)制類(lèi)型轉(zhuǎn)化為幾級(jí)指針都沒(méi)有絲毫意義,因?yàn)樽兞勘旧淼闹禌](méi)有發(fā)生變化!所以強(qiáng)制類(lèi)型轉(zhuǎn)化以后第二個(gè)*便會(huì)指向出問(wèn)題,從而導(dǎo)致訪問(wèn)了不正確的內(nèi)存空間而程序奔潰。

多級(jí)指針強(qiáng)制類(lèi)型轉(zhuǎn)化的目的大部分都是為了滿(mǎn)足編譯器檢查指針層級(jí)操作邏輯是否有誤。

以后大家對(duì)于多級(jí)指針的分析不太熟練的話可以跟bug菌一樣畫(huà)畫(huà)圖分析分析,基本上一些理解上的問(wèn)題就迎刃而解了。

4、最后小結(jié)

指針的理解就為大家講解到這里了,如果你對(duì)指針還有畏懼感,那就只有一個(gè)可能,使用得太少了,多加練習(xí)自然生巧!

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4800

    瀏覽量

    98488
  • 矩陣
    +關(guān)注

    關(guān)注

    1

    文章

    450

    瀏覽量

    36231
  • 嵌入式程序
    +關(guān)注

    關(guān)注

    0

    文章

    6

    瀏覽量

    6718

原文標(biāo)題:C進(jìn)階技巧:二級(jí)指針這個(gè)問(wèn)題被問(wèn)好幾遍!該終結(jié)了!

文章出處:【微信號(hào):gh_c472c2199c88,微信公眾號(hào):嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    芯盛智能XT6160企業(yè)級(jí)SSD主控芯片通過(guò)國(guó)家商用密碼產(chǎn)品二級(jí)認(rèn)證

    近日,芯盛智能XT6160企業(yè)級(jí)SSD主控芯片正式通過(guò)國(guó)家密碼管理局商用密碼檢測(cè)認(rèn)證,達(dá)到GM/T 0008《安全芯片密碼檢測(cè)準(zhǔn)則》第二級(jí)要求,獲頒商用密碼產(chǎn)品認(rèn)證證書(shū)。這是芯盛智能繼XT8210
    的頭像 發(fā)表于 03-17 10:21 ?522次閱讀
    芯盛智能XT6160企業(yè)<b class='flag-5'>級(jí)</b>SSD主控芯片通過(guò)國(guó)家商用密碼產(chǎn)品<b class='flag-5'>二級(jí)</b>認(rèn)證

    什么是B+C級(jí)電源防雷器?

    防雷器應(yīng)運(yùn)而生。這種復(fù)合型防雷器又被稱(chēng)為一、二級(jí)復(fù)合型電涌保護(hù)器,它巧妙地結(jié)合了B類(lèi)(Ⅰ級(jí))防雷器的大通流能力和C類(lèi)(Ⅱ級(jí))防雷器的低殘壓特性,是現(xiàn)代建筑物電源進(jìn)線保
    的頭像 發(fā)表于 03-10 17:36 ?1092次閱讀
    什么是B+<b class='flag-5'>C</b><b class='flag-5'>級(jí)</b>電源防雷器?

    C語(yǔ)言重點(diǎn)—指針

    C語(yǔ)言是比較偏底層的語(yǔ)言,為什么他比較偏底層,就是因?yàn)樗暮芏嗖僮鞫际侵苯俞槍?duì)內(nèi)存操作的。 這篇我們就來(lái)講解C語(yǔ)言的一大特點(diǎn),也是難點(diǎn),指針指針操作。 這篇文章我會(huì)先從基本類(lèi)型的存儲(chǔ)
    發(fā)表于 01-22 08:23

    指針的基礎(chǔ)

    二級(jí)指針,用于存放一個(gè)內(nèi)存的地址,該地址對(duì)應(yīng)的內(nèi)存中存放了另一個(gè)整型變量的地址 比如: int va=0x12345678; int *pva =va; int **ppva =pva;
    發(fā)表于 12-15 06:06

    C指針的妙用分享

    1、你知道嗎?指針其實(shí)是個(gè)天生的數(shù)學(xué)家!看這個(gè): #include int main() { int arr[] = {10, 20, 30, 40, 50}; int *p = arr
    發(fā)表于 11-17 06:35

    二級(jí)差分電路的電阻怎么配置?

    想問(wèn)下,二級(jí)差分電路的電阻該怎么配置呢?
    發(fā)表于 10-16 15:05

    配電柜二級(jí)浪涌保護(hù)器的安裝選型與行業(yè)應(yīng)用方案

    IEC 61643-11及我國(guó)GB/T 18802.1-2011標(biāo)準(zhǔn),SPD分為: Ⅰ級(jí)(B級(jí)):用于建筑物總配電柜,防直擊雷及大能量沖擊; Ⅱ級(jí)C
    的頭像 發(fā)表于 09-28 14:40 ?1313次閱讀
    配電柜<b class='flag-5'>二級(jí)</b>浪涌保護(hù)器的安裝選型與行業(yè)應(yīng)用方案

    德州儀器模擬設(shè)計(jì)|使用第二級(jí)濾波器來(lái)減少電壓紋波

    在上期中,我們探討了高速 ADC 模擬輸入前端的各種無(wú)源匹配技巧。 ? 本期,為大家?guī)?lái)的是《使用第二級(jí)濾波器來(lái)減少電壓紋波》,將對(duì)比三種控制架構(gòu)在相同輸出電壓紋波下的表現(xiàn),并提供了使用相同電氣規(guī)格
    的頭像 發(fā)表于 09-08 09:23 ?1660次閱讀
    德州儀器模擬設(shè)計(jì)|使用第<b class='flag-5'>二級(jí)</b>濾波器來(lái)減少電壓紋波

    嵌入式從入門(mén)到進(jìn)階,怎么學(xué)?

    嵌入式從入門(mén)到進(jìn)階,怎么學(xué)? 嵌入式學(xué)習(xí)的核心是 “軟硬結(jié)合的技術(shù)壁壘”,科學(xué)分層才能高效突破。以下是從入門(mén)到高階的精簡(jiǎn)路線,幫你避開(kāi)彎路: 1、基礎(chǔ)奠基層:構(gòu)建技術(shù)底座 C 語(yǔ)言聚焦 指針、結(jié)構(gòu)體
    發(fā)表于 09-02 09:44

    HarmonyOS NEXT應(yīng)用元服務(wù)常見(jiàn)列表操作二級(jí)聯(lián)動(dòng)

    二級(jí)聯(lián)動(dòng)場(chǎng)景 場(chǎng)景描述 通過(guò)左邊一級(jí)列表的選擇,聯(lián)動(dòng)更新右邊二級(jí)列表的數(shù)據(jù),常用于商品分類(lèi)選擇、編輯風(fēng)格等二級(jí)類(lèi)別選擇頁(yè)面。 本場(chǎng)景以商品分類(lèi)列表頁(yè)面為例,分別通過(guò)List組件,對(duì)左側(cè)
    發(fā)表于 07-02 10:29

    二級(jí)浪涌電路之保險(xiǎn)絲選型

    點(diǎn)在哪里呢? 本文通過(guò)DC110V接口保護(hù)電路的設(shè)計(jì),講解二級(jí)防雷電路中退耦電感的選型。 、設(shè)計(jì)方案 防護(hù)器件的選擇相對(duì)來(lái)講比較直觀,器件廠家會(huì)提供器件的額定工作電壓、擊穿電壓、嵌位電壓等參數(shù),甚至
    發(fā)表于 06-28 22:00

    由 Mybatis 源碼暢談軟件設(shè)計(jì)(八):從根上理解 Mybatis 二級(jí)緩存

    1. 驗(yàn)證二級(jí)緩存 在上一篇帖子中的 User 和 Department 實(shí)體類(lèi)依然要用,這里就不再贅述了,要啟用二級(jí)緩存,需要在 Mapper.xml 文件中指定 cache 標(biāo)簽,如下
    的頭像 發(fā)表于 06-23 11:35 ?565次閱讀
    由 Mybatis 源碼暢談軟件設(shè)計(jì)(八):從根上理解 Mybatis <b class='flag-5'>二級(jí)</b>緩存

    瀾起科技M88STAR5芯片喜獲國(guó)密二級(jí)安全認(rèn)證

    近日,瀾起科技自主研發(fā)的數(shù)據(jù)保護(hù)與可信計(jì)算加速芯片M88STAR5成功通過(guò)GM/T 0008《安全芯片密碼檢測(cè)準(zhǔn)則》第二級(jí)要求 ,榮獲商用密碼檢測(cè)認(rèn)證中心頒發(fā)的 《商用密碼產(chǎn)品認(rèn)證證書(shū)》 。這一
    的頭像 發(fā)表于 06-23 09:31 ?7322次閱讀

    蔡司培訓(xùn)|提升技能必看——AUKOM 一級(jí)/二級(jí)課程培訓(xùn)

    AUKOM 一級(jí)課程通過(guò)系統(tǒng)的分析測(cè)量誤差,即工件、環(huán)境、測(cè)量機(jī)、操作人員、測(cè)量策略,五個(gè)方面分析誤差因子,保證策量結(jié)果的準(zhǔn)確性。 AUKOM 二級(jí)課程是在AUKOM 一級(jí)的基礎(chǔ)上,更深入的展開(kāi)
    發(fā)表于 06-03 14:26 ?2342次閱讀
    蔡司培訓(xùn)|提升技能必看——AUKOM 一<b class='flag-5'>級(jí)</b>/<b class='flag-5'>二級(jí)</b>課程培訓(xùn)

    二級(jí)浪涌電路之退耦電感選型

    二級(jí)浪涌防雷電路設(shè)計(jì)
    的頭像 發(fā)表于 05-12 15:31 ?2590次閱讀
    <b class='flag-5'>二級(jí)</b>浪涌電路之退耦電感選型
    建阳市| 米林县| 读书| 休宁县| 公主岭市| 乌兰县| 布拖县| 泗水县| 汤原县| 饶阳县| 梓潼县| 荔波县| 尉氏县| 积石山| 三门峡市| 大庆市| 汉中市| 无棣县| 布尔津县| 河曲县| 祁阳县| 宁武县| 治县。| 东城区| 晋江市| 革吉县| 汪清县| 临沂市| 汉源县| 丰镇市| 六安市| 吉隆县| 滦南县| 安义县| 德昌县| 长武县| 太仓市| 崇义县| 黄石市| 惠来县| 琼海市|