章节
问答
课签
笔记
评论
占位
占位

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

指针变量其实和普通变量没有什么区别,一个函数也是可以正常返回一个指针的。
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;
}

任务

?不会了怎么办
||

提问题

写笔记

公开笔记
提交
||

请验证,完成请求

由于请求次数过多,请先验证,完成再次请求

加群二维码

打开微信扫码自动绑定

您还未绑定服务号

绑定后可得到

  • · 粉丝专属优惠福利
  • · 大咖直播交流干货
  • · 课程更新,问题答复提醒
  • · 账号支付安全提醒

收藏课程后,能更快找到我哦~

使用 Ctrl+D 可将课程添加到书签

举报

0/150
提交
取消
全部 精华 我要发布
全部 我要发布
最热 最新
只看我的

手记推荐

更多

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?