国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 編程 > C++ > 正文

c++返回局部變量的指針

2020-05-23 14:24:47
字體:
來源:轉載
供稿:網友

函數返回指針。本來就是一個比較容易出問題的操作。在霍頓的《VC++ 入門經典》一書中,給出了一個很有代表性的例子,如下:

  // Ex5_11.cpp

  #include <iostream>

  using std::cout;

  using std::endl;

  double* treble(double); // Function prototype

  int main(void)

  {

  double num = 5.0; // Test value

  double* ptr = 0; // Pointer to returned value

  ptr = treble(num);

  cout << endl

  << "Three times num = " << 3.0*num;

  cout << endl

  << "Result = " << *ptr; // Display 3*num

  cout << endl;

  system("pause");

  return 0;

  }

  // Function to treble a value - mark 1

  double* treble(double data)

  {

  double result = 0.0;

  result = 3.0*data;

  return &result;

  }

  兩個輸出語句,一個直接輸出3*5=15.另一個在一個函數中進行了乘法運算,也是5*3, 存到result變量中也沒有任何問題。返回這個變量的指針,輸出時再接觸引用。貌似也沒有錯誤。兩條輸出語句似乎都應該輸出15.但事實不是這樣。編譯 器會拋出[Warning] address of local variable `result' returned 這樣一個警告信息。程序運行后的結果也并非是我們預想的那樣。第二條輸出語句會輸出一個不可預見的值。這是怎么回事呢?

  仔細分析一下,result是作用域在treble函數中的局部變量。當函數執(zhí)行結束后。變量result會被析構。其原先占用的內存區(qū)域已經被系統(tǒng)回收,可以存儲任何數據。而返回的指向該地址的指針也失去了其原有的意義。因此我們得到這樣一條準則:

  永遠不要從函數中返回局部自動變量的地址。

  如果你真的需要這樣操作。你可以在函數的參數表中傳入一個指針變量。然后將需要寫入的數據寫入到該指針變量指向的地址。由于該指針指向的變量,作用域在函數體 之外。因此不會在函數結束結束時被回收。

  現在回到我們遇到的問題。時間函數localtime就是一個返回指針的函數。返回值類 型:tm*

  該如何接收這個返回值?當然是聲明一個與之類型相同的變量。

  于是你會這樣寫:tm* result;

  接下來呢?還用問?賦值嘛。是不是這樣:result=localtime(....);

  返回什么類型,當然要給什么類型的變量 賦值。但是這樣卻發(fā)生了我們不想看到的結果。

  也許你想到了。就是這個指針!返回的指針在函數結束后不再有效。正確的方法可以是:

  tm result;

  result = *localtime(....);

  也可以是:

  tm* result;

  *result = *localtime(...);

  正確的方法的共同特點是在函數結束前,對返回的指針解除引用。然后用這個數值,為變量或指針指向的內存區(qū)域賦值。也就是說必須要復制函 數的返回值。因為函數體中變量會被析構。

  指針是靈活而強大的,避免低級錯誤,明確基本概念。才能讓指針更好的為我們服務。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
精品剧情v国产在线观看| 激情四房婷婷| 18加网站在线| 五月亚洲综合| 99热免费在线| 成人午夜无人区一区二区| 国产精品视频一区二区图片| 中文天堂av| 九九在线免费视频| 国产精品扒开做爽爽爽的视频| 国产福利一区二区在线精品| 日韩黄色成人| 国产福利电影在线| 免费a级人成a大片在线观看| 中文字幕毛片| 欧美卡一卡二| 精品乱码一区二区三四区视频| 四虎国产精品永久| 国产精品视频二区三区| 一本久久精品| 国产精品视频一区二区免费不卡 | 在线观看av中文| 免费在线高清av| 精品999视频| 国产欧美一区二区三区小说| 亚洲人成影院在线| 国产卡二和卡三的视频| 中文在线观看视频| 天堂在线看视频| 日本高清中文字幕在线| 精品极品三级久久久久| 成在在线免费视频| 热99re久久精品这里都是免费| 国产精品入口免费麻豆| 超碰免费97在线观看| av小说在线| 精品亚洲成a人片在线观看| 最新黄网在线观看| 国产精品一区二区资源| 国产中文字幕在线播放| 国产在线传媒| 九九热视频免费观看| www.91av| 亚洲私人影吧| 精品视频三区| 精精国产xxxx视频在线动漫| 国产黄色大片在线观看| 国产youjizz在线| 在线免费观看黄色片| eeuss影影院www在线播放| 亚洲欧美自拍另类| 青青九九免费视频在线| 美女免费视频黄| 天堂中文在线视频| 最新黄网在线观看| 国产导航在线| 国产精品久久精品牛牛影视| 国产福利在线视频| 2021av天天| 欧美日韩在线资源| 国产九九九九| 在线观看视频污| 黄色在线视频观看网站| 国产精品久久久精品a级小说| 精品麻豆一区二区三区 | 91这里只有精品| 国产福利在线播放麻豆| 四虎精品成人a在线观看| 尤物在线网址| 97国产在线| 午夜视频在线免费| 四虎精品视频| 国产盗摄精品一区二区酒店| 青青久在线视频免费观看| 最新国产在线| 欧美午夜电影一区二区三区| 国产精品入口麻豆免费观看| 热99re久久精品精品免费| 国产亚洲精品久久久网站好莱| 在线黄色.com| 国产精品186在线观看在线播放 | 中文在线有码| www.狠狠艹| 91亚洲天堂| 中文字幕亚洲免费| 黄色片av在线| 日本调教视频在线观看 | 大香伊人中文字幕精品| 国产精品入口麻豆完整版| 欧美xxxx黑人又粗又长| 91极品在线| 91视频久色| 在线观看的网站你懂的| 国产精品ⅴa有声小说| 午夜视频在线看| а√最新版在线天堂| jizz性欧美| 免费高清视频日韩| 国产专区在线播放| 欧美黑人乱大交| 久色视频在线观看| 日本免费视频www| 日本免费不卡| а√最新版地址在线天堂| jlzzjlzz欧美| 福利视频网站导航| 国产网站av| 国产99在线|亚洲| 在线一二三区| a视频在线观看| 亚洲欧美一区二区三区在线播放| 精品全国在线一区二区| 亚洲欧美日韩成人网| 欧美日韩亚洲第一页| 国产女人伦码一区二区三区不卡| 国产三线在线| 精品国产免费观看一区| www.操操操.com| 尤物视频在线观看| 精品一区二区三区高清免费不卡 | 国产黄a三级三级三级av在线看 | 欧美xxxx黑人又粗又长| 秋霞av在线| 国产精品日日爱| 波多野结衣中文字幕久久| 尤物视频网站在线观看| 在线中文av| 最新亚洲精品国自产在线观看| 91资源在线观看| 天堂在线免费观看| 国产导航在线| 黄色片视频在线观看| 国产叼嘿网站免费观看不用充会员| 一级二级三级在线观看| 国产偷激情在线| 青青久在线视频免费观看| 国产盗摄一区二区| 国产理论片免费观看| 任你操在线观看| 在线视频中文字幕久| 国产网红在线观看| 成人亚洲一区二区三区| 免费看黄视频网站| 午夜影院在线免费观看| 国产对白在线| 国产一级免费看| 嫩草在线播放| av在线不卡播放| 永久免费不卡在线观看黄网站| 91sp网站在线观看入口| 激情综合丁香| 九九视频九九热| 欧美高清xxxx性| 免费a级人成a大片在线观看| 亚洲精品天堂在线观看| 国产va在线| 国产成人va亚洲电影| 国产精品视频一区二区久久| 国产免费av网站| 国产在线中文字幕| 九色视频网站| 国产主播福利在线| 国产免费av在线| 中文字幕在线资源| 国产欧美日韩第一页| 91麻豆免费在线视频| 国产成人精品实拍在线| 精品卡一卡卡2卡3网站| av网站大全在线观看| 亚洲电影视频在线| 欧美国产中文| 最近中文字幕mv免费高清视频8| 国产精品探花在线| 国产极品美女到高潮| 在线激情小视频| 欧美96在线| 天天操人人干| 精品一区二区在线欧美| 伊人影院在线观看| 男女羞羞视频在线观看| 1区不卡电影| 亚洲久草视频| 天天操人人爽| 在线观看免费黄色| 国产在线高清理伦片a| 中文字幕欧美日韩在线不卡| 91亚洲天堂| 狠狠狠综合7777久夜色撩人| 国产激情视频一区二区三区| baoyu777.永久免费视频| 日本中文字幕在线播放| 国产95在线|亚洲| 青青青青在线| 97国产视频| 国产特黄在线| 高清av中文在线字幕观看1| 992tv在线观看在线播放| 尤物视频在线观看| www在线视频观看| 国产91久久久久蜜臀青青天草二|