已解决
《C++ primer》练习6.36-6.38:书写返回数组引用的函数声明
来自网友在路上 150850提问 提问时间:2023-09-27 01:18:31阅读次数: 50
最佳答案 问答题库508位专家为你答疑解惑
最近看C++ primer,看到《C++ primer》6.3.3练习,要求书写返回数组引用的函数声明,觉得有必要实践记录一下。
这里先总结返回数组的引用的的函数声明写法(下面的Type是
数组元素的类型,可以是int、float等,如果要返回指向数组的指针亦同,将下面的&
改成*
即可)
- 写法1
函数声明为:
decltype(odd) &arrPtr(int i); //odd是个数组,需要在前面定义如int odd[]={1,2,3};
- 写法2
函数声明为:
Type (&arrPtr(int i))[5]; //返回5个元素数组的引用
- 写法3
函数声明为:
auto arrPtr(int i) -> Type (&)[5];//返回5个元素数组的引用
- 写法4
在开头使用类型别名
using arr = Type[5];//using的类型别名
或
typedef Type arr[5];//typedef的类型别名
函数声明为:
arr &arrPtr(int i) //返回5个元素数组的引用
写一段代码看看
#include <iostream>
using namespace std;int odd[] = {1, 3, 5, 7, 9};
int even[] = {2, 4, 6, 8, 10};
decltype(odd) &arrPtr(int i);
int main(int argc, char *argv[])
{int *q = arrPtr(2);for (int *p = q; p != q + 5; p++)cout << *p << " ";
}
decltype(odd) &arrPtr(int i)
{return (i % 2) ? odd : even;
}
输出
如果把代码中的int *q = arrPtr(2);
改成
int *q = arrPtr(1);
所以返回的引用是什么呢?我们在main函数添加下面的语句:
cout << odd << endl;
cout << arrPtr(1) << endl;
打印的地址其实是一样的,这说明:返回的是数组的头指针。
查看全文
99%的人还看了
相似问题
猜你感兴趣
版权申明
本文"《C++ primer》练习6.36-6.38:书写返回数组引用的函数声明":http://eshow365.cn/6-14292-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: Leetcode——LCR 182.动态口令
- 下一篇: C语言 coding style