C/C++ | 函数返回数组指针

本文介绍了在C/C++中如何声明和使用返回数组指针的函数。由于数组不能被复制,函数通常返回数组的指针或引用。通过函数声明和使用尾置返回类型,可以创建返回指向特定大小数组的指针的函数。

因为数组不能被拷贝, 所以函数不能返回数组. 不过, 函数可以返回数组的指针或引用.

声明一个返回数组指针的函数

Type (*function(parameter_list))[dimension]

int (*func(int i))[10];
  • func(int i) 表示调用 func 函数时需要一个 int 类型的实参.
  • (*func(int i)) 意味着我们可以对函数调用的结果执行解引用操作.
  • (*func(int i))[10] 表示解引用 func 的调用将得到一个大小是 10 的数组.
  • int (*func(int i))[10] 表示数组中的元素是 int 类型.
使用尾置返回类型 (trailing return type)
// '->'后面为函数的返回类型.
auto func(int i) -> int (*)[10];
使用 decltype
int odd[] = {1, 3, 5, 7, 9};
int even[] = {0, 2, 4, 6, 8};

decltype(odd) *arrPtr(int i) {
    return (i % 2) ? &odd : &even;
}

arrPtr 使用关键字 decltype 表示它的返回类型是个指针, 并且该指针所指的对象与 odd 的类型一致. 因为 odd 是数组, 所以 arrPtr 返回一个指向含有 5 个整数的数组的指针.
decltype 并不负责把数组类型转换成对应的指针, 所以 decltype 的结果是个数组, 要想表示 arrPtr 返回指针还必须在函数声明时加一个 * 符号.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值