首页 > 解决方案 > 从函数返回指针

问题描述

为什么这段代码不起作用?我已经通过将指针传递给函数找到了解决方法,但我想知道是否有更简单的解决方案?

#include <stdio.h>

int* func() {
        int d[3];
        for (int f = 0; f < 3; f++)
                d[f] = 42;
        return d;
}


int main() {
        int* dptr;
        dptr = func();

        printf("Hi\n");

        for (int f = 0; f < 3; f++)
                 printf("%d\n",dptr[f]);
        return 0;
}

标签: c++pointers

解决方案


最简单的解决方法是使用 std::array (这是首选方法)

#include <array>

std::array<int, 3> do_something() {
   std::array<int, 3> arr = {1, 2, 3};
   return arr;
}

int main() {
    do_something()[0];
}

最好的部分是编译器将就地构造它,这意味着不会因复制而损失性能。


推荐阅读