解释通过从函数引用返回数组的语法
Explain syntax for returning array by reference from a function
C++函数的语法是:
return_type function_name(parameter1, parameter2, ...)
{
// function body
}
我对"从函数返回数组的引用"有一些疑问:
首先指定返回类型,然后指定函数名称,但要返回数组的引用,它写为:
// for array of size 10 int (&f())[10] { return global; }
为什么?
可以这样写吗:
// return type followed by function name int&[10] f(){ return global; }
或类似的东西(没有类型定义(?
使用时,我无法理解 typedef 的用法,例如:
typedef int array_t[10]; array_t& f() { return global; }
上面的代码将如何简化?简化的代码会像第1点中的代码一样吗?
- 为什么?
因为 Dennis Ritchie 在 C 语言中设计了它,也因为 C++ 被设计成与 C 兼容。
当然,C中没有引用,但引用遵循与指针相同的语法规则,这些规则是从 C 继承而来的。
然而,主要的困惑似乎不是关于引用标点符的位置,而是关于数组语法。数组大小总是位于名称的右侧。同样的模式也适用于变量:
int arr[size];
| | |
| | size
| name
element type
int (&arr_ref)[size];
| | |
| | size
| name
element type
int (&f())[10]
| | |
| | size
| name
element type
函数声明的不同之处仅在于它具有参数列表。它总是紧跟在名称之后。而且因为它紧跟在名称之后,所以它位于数组大小之前。
- 可以这样写吗:
不。这在C++是不成熟的。
- 我在使用它时无法理解 typedef 的用法,例如:
typedef
只是一个别名;类型的不同名称。
此代码将如何简化?
3. 中的代码非常简单。就个人而言,我更喜欢类型别名的using
语法而不是typedef
:
using array_t = int[10];
另一种选择是使用尾随返回类型,尽管这是否或多或少简单是主观的:
auto f() -> int(&)[10] {
它看起来像第 1 点中的代码吗?
雕刻看起来不同,但它声明了相同的功能。
相关文章:
- 从 C++ 中的函数返回数组地址问题
- 如何在 c++ 函数中返回数组
- 如何从 c++ 中的函数返回数组
- 为什么 c++ 函数可以正确返回数组的大小?
- 解释通过从函数引用返回数组的语法
- (C++)我的函数不返回数组
- 如何按 C++ 中的值从函数返回数组
- 返回数组中值的指针地址
- 创建一个函数来转换数组元素的类型并返回数组的地址
- 使用数组类返回数组c++
- 如何使函数返回数组?用于制作在VB.NET中使用的DLL
- 从函数 BY VALUE 返回数组,返回结构时会发生什么?
- 调用和打印函数,在 C++ 中返回数组
- 如何使用递归函数返回数组中整数的索引?
- 从函数返回数组时是否需要删除
- 为什么从函数返回数组时需要将数组声明为静态数组.(C++)
- C++返回数组而不进行动态内存分配?
- 在函数 c++ 中返回数组时出现问题
- 如何从C 中的函数返回数组
- 如何使类函数返回数组,然后将其调用并存储在 main 中