亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > 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函數中的局部變量。當函數執行結束后。變量result會被析構。其原先占用的內存區域已經被系統回收,可以存儲任何數據。而返回的指向該地址的指針也失去了其原有的意義。因此我們得到這樣一條準則:

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

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

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

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

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

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

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

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

  tm result;

  result = *localtime(....);

  也可以是:

  tm* result;

  *result = *localtime(...);

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲娇小xxxx欧美娇小| 亚洲成色777777在线观看影院| 日韩在线观看精品| 精品精品国产国产自在线| 揄拍成人国产精品视频| 97在线观看视频国产| 亚洲国产精品yw在线观看| 中文字幕亚洲情99在线| 91精品国产乱码久久久久久蜜臀| 久久久在线免费观看| 欧美激情一区二区久久久| 久久成人在线视频| 亚洲国产成人久久综合一区| 亚洲专区中文字幕| 国产成人精品久久| 国产精品r级在线| 亚洲第一区第二区| 色偷偷综合社区| 日韩成人中文字幕| 亚洲3p在线观看| 欧美激情网友自拍| 精品国产区一区二区三区在线观看| 国产精品久久久久久久久久东京| 久久久久久久国产| 国产精品扒开腿做| 久久视频精品在线| 国产精品久久久久久久午夜| 精品国产区一区二区三区在线观看| 国产精品美女主播在线观看纯欲| 免费不卡欧美自拍视频| 国产日韩欧美一二三区| 九色91av视频| 欧美日韩亚洲一区二区| 亚洲精品国产精品久久清纯直播| 色偷偷噜噜噜亚洲男人的天堂| 欧美成人手机在线| 国产一区二区在线免费视频| 亚洲男人av电影| 国产欧美一区二区三区在线| 草民午夜欧美限制a级福利片| 91亚洲精品一区二区| 亚洲国产成人精品一区二区| 亚洲欧美www| 最近2019中文免费高清视频观看www99| 亚洲一品av免费观看| 国产一区二区三区在线观看网站| 欧美黄色片在线观看| 亚洲国产欧美精品| 亚洲免费中文字幕| 精品香蕉一区二区三区| 国产丝袜精品视频| 国产日韩综合一区二区性色av| 欧美精品电影在线| 国产精品白嫩美女在线观看| 亚洲欧洲美洲在线综合| 亚洲天堂成人在线视频| 国产成人精品在线| 亚洲视频一区二区| 欧美性猛交xxxx偷拍洗澡| 亚洲理论在线a中文字幕| 久久久天堂国产精品女人| 国产z一区二区三区| 在线观看国产精品淫| 久久视频中文字幕| 欧美电影在线播放| 欧美精品福利视频| 久久伊人免费视频| 国产精品视频久久| 欧美黑人巨大精品一区二区| 热门国产精品亚洲第一区在线| 2019国产精品自在线拍国产不卡| 欧美肥臀大乳一区二区免费视频| 久久视频在线看| 日韩三级成人av网| 免费97视频在线精品国自产拍| 奇米一区二区三区四区久久| 日韩免费不卡av| 成人av电影天堂| 欧美午夜宅男影院在线观看| 精品国产欧美一区二区三区成人| 另类少妇人与禽zozz0性伦| 一区二区欧美久久| 亚洲一区二区三区四区在线播放| 91精品视频在线免费观看| 国产一区二区三区日韩欧美| 欧美成人在线网站| 日韩av影院在线观看| 国内精品久久久久久| 日日狠狠久久偷偷四色综合免费| 亚洲aⅴ男人的天堂在线观看| 91经典在线视频| 亚洲精选在线观看| 国产精品女人久久久久久| 在线视频欧美性高潮| 亚洲情综合五月天| 欧美午夜电影在线| 97av在线播放| 久久久久久久久久av| 国产精品免费看久久久香蕉| 正在播放欧美视频| 91av福利视频| 91网站在线看| 欧美中文在线视频| 少妇高潮 亚洲精品| 日韩美女视频中文字幕| 国产精品白嫩美女在线观看| 国产精品无码专区在线观看| 国产精品美女久久久久av超清| 亚州欧美日韩中文视频| 久久精品国产久精国产一老狼| 国产97人人超碰caoprom| 欧美日韩一区二区在线| 7777精品视频| 日本三级韩国三级久久| 欧美国产日韩精品| 精品国产视频在线| 国产日韩欧美视频| 国产精品极品在线| 欧美成人午夜激情视频| 国产一区二区三区毛片| 91精品一区二区| 伦伦影院午夜日韩欧美限制| 久久久欧美精品| 91在线色戒在线| 欧美性猛交xxxx免费看| 久久99热这里只有精品国产| 国产一区二区丝袜| 91在线观看免费高清完整版在线观看| 欧美黄色三级网站| 欧美日韩国产中文字幕| 成人国产精品一区| 岛国av在线不卡| 日韩免费观看网站| 久久久久久国产精品久久| 亚洲美女动态图120秒| 国产一区二区三区精品久久久| 国产精品久久久久av| 久久久久久中文| 91sao在线观看国产| 亚洲wwwav| 一区二区三区国产在线观看| 一本大道亚洲视频| 精品少妇一区二区30p| 91经典在线视频| 国产精品欧美久久久| 在线精品国产成人综合| 日韩电影大全免费观看2023年上| 久久综合88中文色鬼| 欧美限制级电影在线观看| 国产精品高清网站| 亚洲欧美成人网| 97免费中文视频在线观看| 欧美日韩国产丝袜另类| 欧美专区在线播放| 91亚洲永久免费精品| 日韩av黄色在线观看| 色综合亚洲精品激情狠狠| 精品国产一区二区三区久久久狼| 国产自产女人91一区在线观看| 亚洲综合自拍一区| 456亚洲影院| 国内精品久久久久久中文字幕| 欧美成人第一页| 国产免费一区二区三区在线观看|