我可以定义一个函数来返回对固定大小数组的引用吗
Can I define a function which returns a reference to an array with a fixed size?
此函数接受一个int,并用该值填充一个包含10个int的数组,并返回一个指向该数组的指针。我怎么能做同样的事情,但返回对数组的引用?
int (*g(int n))[10]
{
int (*ptr)[10] = (int (*)[10])malloc(sizeof(int) * 10);
for (int i = 0; i < 10; i++) {
(*ptr)[i] = n;
}
return ptr;
}
类似的东西
int (&h(int n))[10]
{
// How to do this
int (&ref)[10] = ???;
for (int i = 0; i < 10; i++) {
ref[i] = n;
}
return ref;
}
同样的方法,但在返回之前取消引用:
int (&h(int n))[10]
{
return *g(n);
}
或(不那么简短)
int (&h(int n))[10]
{
int (*ptr)[10] = (int (*)[10])malloc(sizeof(int) * 10);
for (int i = 0; i < 10; i++) {
(*ptr)[i] = n;
}
return *ptr;
}
或更明确的
int (&h(int n))[10]
{
int (*ptr)[10] = (int (*)[10])malloc(sizeof(int) * 10);
for (int i = 0; i < 10; i++) {
(*ptr)[i] = n;
}
int& ref = *ptr;
return ref;
}
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 数组索引的值没有增加
- 将对象数组的引用传递给函数
- 为char数组调整zlib-zpipe
- 2D数组来自文本输入,中间有空格
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 使用strcpy将char数组的元素复制到另一个数组
- 声明后,gcc 的动态大小数组是否与标准数组有效相同?
- 将 int 数组转换为带有小数C++的双精度数组
- 如何将大括号初始值设定项用于动态大小数组和新数组?
- 对未知大小数组的引用的列表初始化:它是否应该推断数组大小?
- 返回指向固定大小数组C++的数组的指针
- 如何将小数数组转换为二进制数数组
- 对指向固定大小数组的指针数组的内存分配的解释
- 在 C++ 中创建固定大小的 int 数组的动态大小数组