簡體   English   中英

關於函數返回指針

[英]Regarding function returning pointer

我想澄清一些有關函數返回指針的信息。

我理解指針的概念,但是如果從函數返回,這會使我感到困惑。

我了解到,當我們想從函數返回一些數據時,我們將數據類型寫為return type,例如,如果返回的是int類型的數據,則返回類型將為int。

因此,當我們要從函數返回某個變量的地址時,我們將返回數據類型寫為某種​​指針類型,因為內存地址指向某種類型的內存位置,這就是為什么返回類型為指針類型的原因我想弄清楚的是現在這意味着c ++中地址的數據類型是指針類型

一般工廠功能的工作方式如下:

class HobNob;
...
HobNob* CreateHobNob()
{
    return new HobNob();
}
...
HobNob* myHobNob = CreateHobNob();

當然,在現實生活中,我們永遠不會使用裸指針,但總的想法是我們需要指針,因為我們不想傳遞HobNob (可能很大),而是處理(指針)到在堆上創建的指針。 現在,我們也可以完全控制其生命周期。

返回指針的函數如下所示:

int* foo()
{
    // some code
    return intPointer; // assuming intPointer is of type int*
}

要么

int* foo()
{
    // some code
    return new int; // return a newly created integer
}

如果您的函數應該創建一個新的類型的對象並返回它。

要么

int* foo()
{
    int* arr = new int[10]; // create an array dynamically
    // some code
    return arr; // return an array
}

如果您的函數應該返回某個數組。

顯然,您可以使用所需的任何數據類型更改int

另外,正如其他人指出的那樣,將局部變量的地址返回到函數外部也不是一個好主意,因此,如果要執行此操作,則必須將局部變量定義為靜態變量,否則它是未定義的行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM