c++ - 从函数返回指针
问题描述
为什么这段代码不起作用?我已经通过将指针传递给函数找到了解决方法,但我想知道是否有更简单的解决方案?
#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;
}
解决方案
最简单的解决方法是使用 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];
}
最好的部分是编译器将就地构造它,这意味着不会因复制而损失性能。
推荐阅读
- android - 即使应用程序在特定时间关闭,也可以打开电话拨号器
- azure - 在 ARM 模板中的属性名称值中调用引用/部署函数
- google-cloud-dataflow - Google Cloud Dataflow + Java 8 vs Java 11:相同的管道,不同的工作线程 CPU 利用率
- php - 如何在我的私人应用程序中的 shopify 中获取下订单数据
- css - 尝试在 Laravel 中更改循环元素的 CSS
- perl - perl 匹配的开始和结束行号
- c++ - 如何在函数调用期间保护寄存器不被覆盖?
- swift - SwiftUI 过渡(.asymmetric..)不适用于偏移
- vue.js - 为什么 Element UI datepicker 组件在我再次点击之前不会更新其值?
- javascript - 如何在这个简单的 React 代码中输出 hello world?