c++ - 在函数内部的声明中初始化一个数组并在外部使用它
问题描述
我想轻松地在函数内初始化一个数组:
int arr[]{1, 2, 3};
它简化了数组大小的计算:
int n = sizeof(arr) / sizeof(*arr);
但是,我需要保留这个数组并且可以在函数外部访问。
这个怎么做?
首先,我有这个:
#include <iostream>
using namespace std;
int n{0};
int* g_arr{nullptr};
void f()
{
int arr[]{1, 2, 3};
n = sizeof(arr) / sizeof(*arr);
g_arr = arr; // you can't use g_arr value outside this function, since arr will be freed.
}
void b()
{
cout << n;
for (int i = 0; i < n; ++i)
{
cout << g_arr[i] << endl; // this is still wrong
}
}
int main()
{
f();
b();
}
解决方案
使 arr[] 静态:
void f()
{
static int arr[]{1, 2, 3};
n = sizeof(arr) / sizeof(*arr);
g_arr = arr;
}
推荐阅读
- python - Scale an axis to scientific notation in Altair
- c - 如何在 C 中使用相对路径
- c++ - std::cin 在 for 循环中不起作用
- python - Set size of FieldLenField
- javascript - 根据数组索引从原始数组推送到目标内部数组
- python - 比较两个句子数据框并返回第三个
- javascript - 本地策略的 Passport.js 代码在登录模块中无法正常工作
- javascript - Laravel 有选择地使用来自节点模块的插件
- python - 如何使用 Python 在 3D 空间中绘制在球体表面上移动的点的轨迹?
- python - Scrapy CrawlSpider 和 LinkExtractor 规则跟踪页面上匹配 /path/? 的所有链接