国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

C語言函數傳參:指針的指針

開發 后端
今天同事問了一個問題:在函數參數中傳遞指針的指針,很常用的一個場景,重新梳理一下記錄于此,以后如果有類似的問題直接發這篇小總結就可以了。

[[375487]]

 前言

今天同事問了一個問題:在函數參數中傳遞指針的指針,很常用的一個場景,重新梳理一下記錄于此,以后如果有類似的問題直接發這篇小總結就可以了。

代碼:版本1

  1. void do_malloc(char *p, int size
  2.     p = (char *)malloc(size + 1); 
  3.     memset(p, 0, size + 1); 
  4.  
  5.  
  6. int main(int argc, char *argv[]) 
  7.     char *pData = 0; 
  8.     do_malloc(pData, 128); 
  9.     sprintf(pData, "%s""abc"); 
  10.     printf(pData); 
  11.     return 0; 

代碼本意是:do_work()函數向系統堆空間申請size個字節的空間,然后返回給main函數中的pData指針。但是,執行的時候報錯:Segmentation fault (core dumped)。

分析原因

我們可以把char*類型的指針看成一個遙控器,如果給這個指針賦值,就相當于把這個遙控器與一個設備進行綁定,可以通過遙控器來控制這個設備。

執行char *pData = 0;

pData內容為空,相當于這個遙控器沒有與任何設備綁定,如下圖:

 

執行do_work(pData, 128);

這里傳遞的參數是pData本身,所以進入void do_work(char *p, int size)函數之后,實參pData的內容就賦值給形參p,所以指針p的內容也為空,也就是說:p這個遙控器也沒有與任何設備綁定,如下圖:

 

執行p = (char *)malloc(size + 1);

這句話的作用是把申請到的堆空間的首地址,賦值給p。就是說:現在p指向了內存中的一塊空間,就相當于一個p這個遙控器與一個設備進行綁定了,可以控制這個設備了,如下圖:

 

到這里就已經看到程序崩潰的原因了:雖然給指針p賦值了,但是實參pData中的內容一直為空,因此從do_malloc函數返回之后,pData仍然是一個空指針,所以就崩潰了。當然,p指向的堆空間也就泄露了。

代碼:版本2

代碼的本意是在do_malloc函數中申請堆空間,然后把這塊空間的首地址賦值給pData。在do_malloc函數中,調用系統函數malloc成功之后返回所分配空間的首地址,關鍵是要把這個首地址送給pData指針,也就是說要讓pData指針變量中的值等于這個堆空間的首地址。

那應該如何通過中間的一個函數來完成這個功能呢,如下代碼:

  1. void do_malloc(char **p, int size
  2.     *p = (char *)malloc(size + 1); 
  3.     memset(*p, 0, size + 1); 
  4.  
  5.  
  6. int main(int argc, char *argv[]) 
  7.     char *pData = 0; 
  8.     do_malloc(&pData, 128); 
  9.     sprintf(pData, "%s""abc"); 
  10.     printf(pData); 
  11.     return 0; 

執行char *pData = 0;

這一句沒有變化。

執行do_malloc(&pData, 128);

把pData指針的地址作為實參進行傳遞,因為pData本身就是一個指針,加上取地址符&,就是指針的指針(二級指針),因此do_malloc函數的第一個參數就要定義成char**類型,此時示意如圖:

 

p此時是一個二級指針,參數賦值之后,p里面的內容就變成了pData這個指針變量的地址,也就是說p指向了pData這個變量。

執行*p = (char *)malloc(size + 1);

這句話首先搞明白*p是啥意思,剛才說了,p是一個指針,它指向了pData這個變量。那么在p前面加上取值操作符*,就相當于是取出指針p中的值,它里面的值就是pData!因此,malloc函數返回的堆空間首地址,就相當于是賦值給了pData,如下圖:

 

此時,pData這個遙控器就與分配的這塊堆空間綁定在一起,隨后再操作pData就沒有問題了。

本文轉載自微信公眾號「IOT物聯網小鎮」,可以通過以下二維碼關注。轉載本文請聯系IOT物聯網小鎮公眾號。道哥  

 

責任編輯:武曉燕 來源: IOT物聯網小鎮
相關推薦

2011-07-15 01:20:58

C指針函數函數指針

2021-04-13 07:58:42

Go語言函數

2009-07-31 15:10:21

C#函數指針數組C#數組

2023-09-14 12:35:28

寄存器

2022-01-06 14:25:24

C語言指針內存

2023-10-27 11:21:20

C語言Multics語言

2021-12-06 11:19:47

語言指針內存

2009-06-30 10:46:05

多級指針

2015-03-09 09:34:04

C語言函數指針

2009-01-08 09:26:06

C語言指針類型

2020-09-23 16:55:43

C語言編程語言

2025-09-25 17:17:06

GoC++指針

2014-08-01 15:16:05

SwiftC語言

2021-08-06 13:48:53

C語言野指針內存

2023-11-29 09:47:11

C++對象

2021-07-29 06:09:05

萬能指針C語言void

2020-12-02 10:27:40

C語言

2023-11-22 13:22:51

C++函數

2011-04-11 11:09:50

this指針

2010-01-18 15:53:27

C++析構函數
點贊
收藏

51CTO技術棧公眾號

亚洲夂夂婷婷色拍ww47| 1024国产精品| 日韩av色综合| h1515四虎成人| 欧美一区二区三区在线| 日本成在线观看| 国产精品成人网| av五月天在线| 久久亚洲精华国产精华液| 国产91视频一区| 久久99精品久久久| 亚洲三区在线| 麻豆精品精品国产自在97香蕉| 久久国产精品久久| 99re国产精品| 国产日韩欧美亚洲一区| 欧美一区影院| 成人欧美一区二区三区视频xxx| 欧洲乱码伦视频免费| 国产精品久久久久av免费| 日本成人a网站| 久久免费观看视频| 国内精品免费| 国产精品高潮呻吟久久av黑人| 日韩欧美中文字幕电影| 欧洲精品在线视频| 欧美色网址大全| 国产精品久久久久久久app| 精品国产一区二区三区噜噜噜| 日本亚洲欧美成人| 亚洲乱码精品| 美女主播视频一区| 精彩视频一区二区三区| 人人妻人人澡人人爽欧美一区| 99re8在线精品视频免费播放| 免费一级特黄录像| 午夜精品一区在线观看| 成人在线免费观看| 日韩国产高清视频在线| 国产精品毛片aⅴ一区二区三区| 久久久免费电影| 日韩精品免费| 日韩精品欧美在线| 99精品视频在线免费观看| 国产一区二区视频免费在线观看| 亚洲精品国产精品乱码不99| 免费国产在线观看| 日韩国产在线看| 激情av综合| 国产欧美综合精品一区二区| 国产精品小仙女| 成人满18在线观看网站免费| 色综合天天天天做夜夜夜夜做| 亚洲资源一区| 欧美激情一级欧美精品| 中文字幕亚洲精品乱码| 中文字幕免费在线不卡| 中文字幕在线观看一区二区| 免费看a在线观看| www.日本久久久久com.| 日韩在线视屏| 国产精品av免费| 综合久久综合久久| 国产激情视频在线| 欧美日本高清一区| 亚洲激情在线| 91精品91久久久中77777老牛| 一区二区三区在线不卡| 手机在线免费看av| 51ⅴ精品国产91久久久久久| 校园激情久久| 五月综合网站| 一二三中文字幕在线 | a视频在线免费看| www.精品av.com| 国内精品久久久久久久影视麻豆| 久久人妻无码一区二区| 一本色道久久综合亚洲精品按摩| 久久亚洲国产精品尤物| 国产精品区一区| 中文字幕av免费专区久久| av免费在线免费观看| 欧美最顶级丰满的aⅴ艳星| 日韩国产欧美三级| 意大利激情丛林无删减版dvd| 亚洲人成网站777色婷婷| 午夜精品婷婷| 爱爱永久免费视频| 色偷偷888欧美精品久久久| 激情久久综合| 国产男女爽爽爽| 中文字幕亚洲一区二区三区五十路| 艳女tv在线观看国产一区| 天天色综合社区| 日韩精品免费电影| 日韩一级精品| 色视频www在线播放| 久久久久久久久久婷婷| 九九在线精品视频| 男人资源在线播放| 国产在线拍偷自揄拍精品| 国产精品麻豆99久久久久久| 巨胸喷奶水www久久久| 日本不卡一区| 欧美三级日韩在线| 久久精品国内一区二区三区水蜜桃| 天堂中文视频在线| 中文字幕少妇一区二区三区| 另类小说欧美激情| 超碰个人在线| 欧美日韩另类丝袜其他| 欧美在线观看一二区| 欧美一区二区三区高清视频| 国产区二区三区| 欧美成人自拍视频| 26uuu亚洲综合色| 懂色aⅴ精品一区二区三区| 9l视频自拍9l视频自拍| 亚洲国产精品成人一区二区| 日韩激情在线观看| 国产网友自拍视频导航网站在线观看 | 日本在线不卡一区| 成在在线免费视频| 99久久伊人精品影院| 欧美视频在线观看免费| 日韩欧美综合| 在线观看免费网站| 亚洲一区二区三区久久| 日韩欧美黄色动漫| 欧美激情1区| av播放在线| 免费h精品视频在线播放| 欧美日韩高清影院| 99亚洲一区二区| 日韩伦理在线观看| 久久久久久久久久久久久久一区| 欧美少妇一区二区| 狠色狠色综合久久| www免费视频观看在线| 奇米影视首页 狠狠色丁香婷婷久久综合| 欧美日韩一区不卡| 日韩激情一二三区| 日韩av影片| 浮妇高潮喷白浆视频| 久久精品国产精品亚洲| 中文成人综合网| 北条麻妃国产九九九精品小说| 亚洲国产精品成人一区二区在线| 99re视频| 日韩精品一区二区在线| 国内精品写真在线观看| 国内精品视频| av首页在线| 国产精选在线观看91| 精品久久久久久久久久久久包黑料| 黄网站免费久久| 日韩中文字幕| 中文字幕一二三区在线观看| 国产精品一区视频网站| 欧美videossexotv100| av一区二区三区| 国产探花在线精品一区二区| 欧美精品电影| 青青青免费在线| 国产精品亚洲美女av网站| 欧美日韩国产在线观看| 久久精品免费观看| 国产主播性色av福利精品一区| 亚洲尤物在线视频| 香蕉精品视频在线| 97色在线播放视频| 欧美日韩精品专区| 91香蕉视频mp4| 欧美日韩亚洲一区三区| 成人免费福利| 天堂а√在线8种子蜜桃视频| 国产欧美综合一区| 国产精品黄色影片导航在线观看| 欧美一区二区精美| 日本一区二区三区四区在线视频 | 欧美亚洲在线观看| 这里只有精品99re| 国产人成亚洲第一网站在线播放 | av电影免费在线看| 可以免费观看av毛片| 国产伦精品一区二区三| 久久国产精品影视| 91精品在线麻豆| 亚洲欧洲国产日本综合| 免费久久99精品国产| 欧美综合另类| 日韩成人在线电影| yiren22亚洲综合伊人22| 日本三级免费观看| 久久久精品动漫| 欧美亚洲国产视频| 亚洲网在线观看| 欧美午夜电影在线播放| 中文字幕在线播放不卡一区| 美女视频黄频大全不卡视频在线播放|