繁体   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