程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> Pointers與References(四)

Pointers與References(四)

編輯:關於VC++

16.7 從函數中返回指針和/或引用

當聲明一個函數,你必須按類型規則聲明,並返回它。比如:

int MyFunc();    // 返回int類型
SOMETYPE MyFunc(); // 返回SOMETYPE類型
int* MyFunc();   // 返回int類型指針
SOMETYPE *MyFunc(); // 返回SOMETYPE類型指針
SOMETYPE &MyFunc(); // 返回SOMETYPE類型reference

 

噢,我的孩子,我不 想深入討論它。但是我確信假如你理解了指針,那麼函數聲明返回一個指針或reference應該 是多麼的合理。以上代碼展示了怎樣簡單地聲明函數並返回reference或指針。

SOMETYPE *MyFunc(int *p)
{
  ...
  ...
  return p;
}
SOMETYPE &MyFunc(int &r)
{
 ...
 ...
 return r;
}

 

在函數體內,返回語句不應該返回一個指針或reference,指向函數體內已聲明 的變量內存地址。另外,當函數一退出,所有本地變量被釋放,指針或reference將指向實際 上你不必關心的內存中某地。在你的函數外使用此種情況下的虛指針是非常不合適和危險的 。(譯者注:實際上就是內存洩露。)當然,在函數體內,假如你的指針或reference含有由 使用new操作符動態配置得到的數據類型、struct、或class的內存地址。那麼返回指針或 reference應是非常合理。

SOMETYPE *MyFunc() //返回動態配置內存地址指針是正常 代碼
{

  int *p = new int[5];
  ...
  ...
  return p;
}

16.8 術語表

指針(pointer):含有內存地址的變量,類似reference,當然,指針也有和reference不 同的語法和慣例用法。

引用(reference):含有內存地址的變量,類似指針,當然,references也有和指針不同 的語法和慣例用法。

“address of”operator:返回變量內存地址的操作符。

動態內存分配:程序中實時顯式分配的連續內存塊。

new :返回同某種數據類型指針的操作符,並指向預留地址。

delete :返回某個指針指向的內存以釋放存儲空間(每個程序都有的專用的空閒內存池 )的操作符。

  1. 上一頁:
  2. 下一頁:
欄目導航
Copyright © 程式師世界 All Rights Reserved