3-9 函数返回一个绳子:函数返回指针
本节编程练习不计算学习进度,请电脑登录imooc.com操作

函数返回一个绳子:函数返回指针

指针变量其实和普通变量没有什么区别,一个函数也是可以正常返回一个指针的。
char * func()
{
    char * p = nullptr;
    return p;
}

int main(int argc,char **argv)
{
    return 0;
}
但是我们需要思考的是,什么情况下我们要返回一个指针,返回指针的时候需要我们注意些什么?
通常情况下,我们是希望为函数外提供一片内存,例如,我们可以给函数外面提供一个数组。
int * func()
{
    int arr[] = {1, 2, 3, 4};
    return arr;
}
但是这样写得话,程序会崩溃掉。原因是,arr 数组是一个局部变量,在 func 结束之后,其内存就被销毁掉了。此时在函数外面对其进行操作,自然会出问题。所以,要完成这类操作,我们需要把内存分配到堆内存上面。
int * func()
{
    int * arr = (int *)malloc(4 * sizeof(int));
    return arr;
}
这样就没有问题了,当然,既然是分配在了堆内存上,就要记得手动销毁。
int main(int argc,char **argv)
{
    int * p = func();
    free(p);
    return 0;
}

任务

  1.  
下一节