在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

怎么理解指針的指針?

學益得智能硬件 ? 來源:學益得智能硬件 ? 2024-02-23 16:46 ? 次閱讀

怎么理解指針的指針?其實這個概念并不難,只是把它放到實際應用中,容易造成困擾。

指針的指針還得先從指針講起。

先有一個變量,假設它是整型,在系統中占 4 個字節。

int a;

內存是以字節為單位,每個字節都有一個地址,所以變量 a 占了4個地址。

wKgaomXYW6eAF520AAhEpgtfiMA992.jpg

C語言中,描述變量 a 的地址,一般取最前面的這個字節,所以 a 的地址是 0x100。

為了方便計算,很多時候我們想把 0x100 保存下來,于是又需要一個變量,這個變量就是指針變量。指針的大小跟環境有關系,這里假設占 4 個字節。用代碼來表示,可以寫成:

int *p = &a;

我們也經常說,指針 p 指向變量 a。

wKgZomXYW6eAd6EAAAfU7kUaPSs671.jpg

既然 p 在內存中占了 4 個字節,那他肯定也有個地址,假設這個地址是 0x1000,如果想把 0x1000 保存下來,那就需要指針的指針。

指針的指針也屬于指針,所以在內存中也占 4 個字節。

如果用代碼來表示,可以寫成:

int **q = &p;

q是個指針,指向變量 p,因為 p 本身也是個指針,所以就把 q 稱作指針的指針。

雖然 q 和 p 都是指針,但是也不能隨便賦值,比如能不能寫成:

q = &a;

q是指針,&a是地址,地址賦值給指針,簡直完美。

這個代碼完全行不通,因為 q 是 int ** 類型,它只能指向 int *類型的變量,比如 p 就是 int * 類型的變量,而 a 是 int 類型的變量。

關于指針的指針,有個極其經典的筆試題,如果你刷過題,那你一定會遇到。



這個題目問題就出在實參和形參是兩塊不同的內存,malloc申請的內存,地址記在了形參中,對實參沒有任何的影響,所以在主函數中,實參一直是空,把字符串拷貝進去,就會出現段錯誤。

void init_memory(char **s)
{
    *s = malloc(128);     
}


int main()
{
    char *str = NULL;
    
    init_memory(&str);
    
    strcpy(str, "helloworld");
            
    return 0;
}
修改的方法就是傳指針 str 的地址,形參改成指針的指針,于是就出現了 s 指向 str,*s 就是 str,執行init函數,str從NULL變成了一個合法的地址,程序就能順利運行。





審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    180

    文章

    7615

    瀏覽量

    137845
  • 指針
    +關注

    關注

    1

    文章

    482

    瀏覽量

    70613
  • 變量
    +關注

    關注

    0

    文章

    613

    瀏覽量

    28477

原文標題:怎么理解指針的指針?

文章出處:【微信號:學益得智能硬件,微信公眾號:學益得智能硬件】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    【設計技巧】指針的使用注意事項:空指針、指針賦值、void *指針

    前面的文章,分析了指針的一些概念,可以說指針是C的靈魂,看起來簡單,但是想要理解透徹卻是相當難,需要大量的練習,不斷的鞏固,不斷的重復才能盡可能的理解
    發表于 08-20 08:30

    指針的用法總結,指針用法大全

    讓你不再害怕指針前言:復雜類型說明要了解指針,多多少少會出現一些比較復雜的類型,所以我先介紹一下如何完全理解一個復雜類型,要理解復雜類型其實很簡單,一個
    發表于 10-14 17:51 ?87次下載

    C和指針習題答案配C和指針

    C和指針習題答案配C和指針
    發表于 09-07 14:29 ?6次下載
    C和<b class='flag-5'>指針</b>習題答案配C和<b class='flag-5'>指針</b>

    c語言函數指針定義,指針函數和函數指針的區別

     往往,我們一提到指針函數和函數指針的時候,就有很多人弄不懂。下面就由小編詳細為大家介紹C語言中函數指針,指針函數和函數指針之間的區別。
    發表于 11-16 15:18 ?3649次閱讀

    深入理解C指針(C/C++程序員進階必備,透徹理解指針與內存管理)pdf

    深入理解C指針
    發表于 03-21 09:42 ?119次下載

    為什么使用指針?C++中的“指針

    為什么使用指針?因為在操作大型數據和類時,指針可以通過內存地址直接訪問數據,可避免在程序中復制大量的代碼,因此指針的效率最高。一般來說,指針會有3大用途
    的頭像 發表于 10-04 10:33 ?5193次閱讀

    輕松理解C語言指針的實驗和詳細資料說明

    我并不打算使用過于官方、正統的語言來講解指針。因為如果我這樣做,就失去了做這個教程的意義。如果需要,大家完全可以從各大教材、網站找到對指針正規的解釋。但無疑,這種正規、一絲不茍的解釋卻沒法帶領大家,尤其是學習C語言的新手,來輕松的領悟
    發表于 04-11 16:08 ?10次下載
    輕松<b class='flag-5'>理解</b>C語言<b class='flag-5'>指針</b>的實驗和詳細資料說明

    如何輕松理解C語言指針的詳細資料說明

    我并不打算使用過于官方、正統的語言來講解指針。因為如果我這樣做,就失去了做這個教程的意義。如果需要,大家完全可以從各大教材、網站找到對指針正規的解釋。但無疑,這種正規、一絲不茍的解釋卻沒法帶領大家,尤其是學習C語言的新手,來輕松的領悟
    發表于 05-08 17:48 ?11次下載
    如何輕松<b class='flag-5'>理解</b>C語言<b class='flag-5'>指針</b>的詳細資料說明

    理解函數指針、函數指針數組、函數指針數組的指針

    理解函數指針、函數指針數組、函數指針數組的指針
    的頭像 發表于 06-29 15:38 ?1.5w次閱讀
    <b class='flag-5'>理解</b>函數<b class='flag-5'>指針</b>、函數<b class='flag-5'>指針</b>數組、函數<b class='flag-5'>指針</b>數組的<b class='flag-5'>指針</b>

    C語言指針理解使用

    C語言指針理解使用指針變量的聲明給普通變量的賦值對比給指針變量的賦值代*的指針的使用說明指針
    發表于 01-13 13:42 ?3次下載
    C語言<b class='flag-5'>指針</b>的<b class='flag-5'>理解</b>使用

    二級指針和多級指針的定義形式

    指針變量作為一個變量也有自己的存儲地址,而指向指針變量的存儲地址就被稱為指針指針,即二級指針
    的頭像 發表于 10-18 16:38 ?1965次閱讀

    淺談指針常量和常量指針

    這節課我們來講一講指針常量和常量指針。
    的頭像 發表于 02-21 09:27 ?1122次閱讀

    指針是什么

    指針是什么? 1.1 淺談指針 理解指針的 兩個要點: 指針是內存中一個最小單元的編號,也就是地址; 平時口語中說的
    的頭像 發表于 11-24 15:50 ?2288次閱讀
    <b class='flag-5'>指針</b>是什么

    函數指針指針函數是不是一個東西?

    函數指針的本質是指針,就跟整型指針、字符指針一樣,函數指針指向的是一個函數。
    的頭像 發表于 01-03 16:35 ?569次閱讀
    函數<b class='flag-5'>指針</b>和<b class='flag-5'>指針</b>函數是不是一個東西?

    面試???1:函數指針指針函數、數組指針指針數組

    在嵌入式開發領域,函數指針指針函數、數組指針指針數組是一些非常重要但又容易混淆的概念。理解它們的特性和應用場景,對于提升嵌入式程序的效率
    的頭像 發表于 08-10 08:11 ?999次閱讀
    面試???1:函數<b class='flag-5'>指針</b>與<b class='flag-5'>指針</b>函數、數組<b class='flag-5'>指針</b>與<b class='flag-5'>指針</b>數組
    主站蜘蛛池模板: 九九re| 亚洲成a人片77777潘金莲 | 五月婷婷之综合激情 | 久久草在线视频国产一 | h视频欧美 | 国产人成精品香港三级古代 | 欧美性aaa | 天天弄天天干 | 亚洲色图在线视频 | 色噜噜狠狠成人影院 | 四虎在线精品免费高清在线 | 色婷婷激婷婷深爱五月小说 | 亚洲一二三四 | www.色99| 亚洲欧洲第一页 | 视频免费黄色 | 69日本xxxhd| 女人张开腿让男人桶免费最新 | 国产精品九九热 | 国产女人在线视频 | 日韩免费观看一级毛片看看 | 禁漫羞羞a漫入口 | 久久免费精品高清麻豆 | 午夜嘿嘿嘿 | 欧美成人 一区二区三区 | 东京加勒比 | 日本拍拍拍 | 国产成人久视频免费 | 美女久久久 | 中文字幕二区 | 国模视频一区二区 | 午夜视频久久 | 91视频啪啪 | 久久最新精品 | 综合免费视频 | 亚洲国产精品综合久久2007 | 深夜释放自己vlog糖心旧版本 | 这里只有精品在线 | 台湾av| 亚州免费一级毛片 | 日韩a毛片免费全部播放完整 |