《C++ Primer》练习6.36-6.38:书写返回数组引用的函数声明

这篇具有很好参考价值的文章主要介绍了《C++ Primer》练习6.36-6.38:书写返回数组引用的函数声明。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近看C++ Primer,看到6.3.3练习,要求书写返回数组引用的函数声明,觉得有必要实践记录一下。

《C++ Primer》练习6.36-6.38:书写返回数组引用的函数声明,C和C++,数组,引用,函数,数组引用,声明

这里先总结返回数组的引用的的函数声明写法(下面的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;
}

输出
《C++ Primer》练习6.36-6.38:书写返回数组引用的函数声明,C和C++,数组,引用,函数,数组引用,声明
如果把代码中的int *q = arrPtr(2);改成

int *q = arrPtr(1);

《C++ Primer》练习6.36-6.38:书写返回数组引用的函数声明,C和C++,数组,引用,函数,数组引用,声明
所以返回的引用是什么呢?我们在main函数添加下面的语句:

cout << odd << endl;
cout << arrPtr(1) << endl;

打印的地址其实是一样的,这说明:返回的是数组的头指针。

《C++ Primer》练习6.36-6.38:书写返回数组引用的函数声明,C和C++,数组,引用,函数,数组引用,声明文章来源地址https://www.toymoban.com/news/detail-730875.html

到了这里,关于《C++ Primer》练习6.36-6.38:书写返回数组引用的函数声明的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • C++ Primer Plus第二章编程练习答案

    答案仅供参考,实际运行效果取决于运行平台和运行软件 1.编写一个C++程序,它显示您的姓名和地址。 2.编写一个C程序它要求用户输入一个以 long 为单位的距离,然后将它转换为码(- ng等于220码) 3.编写1个C++程序它使用3个用户定义的函数(括mai()),并生成下面的输出Three blind

    2024年02月09日
    浏览(15)
  • C++ Primer 6.2参数传递 知识点+练习题

    C++ Primer 6.2参数传递 知识点+练习题

    以上需要传入string可能很大,不适合用值传递,拷贝耗空间 不需要修改,最好用const 底层const:指向的对象是一个常量, 不允许用指针修改 顶层const:只允许指向一个对象 P57 有时间详细整理 不用const限制传入实参范围 记住, 多维数组就是数组的数组 若为2维数组,传入数组

    2024年02月02日
    浏览(16)
  • C++ Primer 6.5 特殊用途语言特性 6.6 函数匹配 知识点+练习题

    C++ Primer 6.5 特殊用途语言特性 6.6 函数匹配 知识点+练习题

    在给定的作用域中一个形参只能被赋予一次默认实参 局部变量不能作为默认实参,函数结束就销毁,无法当作默认实参。 除此之外,只要表达式的类型可转换成形参所需要的类型,则可以作为默认实参 将函数定义为内联函数,即加上inline,在编译时内联展开代替函数 在编译

    2024年01月22日
    浏览(9)
  • 《C++ primer》练习3.20:输出vector相邻元素的和&输出vector头尾对象的和

    《C++ primer》练习3.20:输出vector相邻元素的和&输出vector头尾对象的和

    最近看《C++ Primer》,有这样一个题目 读入一组整数并把它们存入一个vector对象,将每对相邻整数的和输出出来。 这里要注意输入的奇数个和偶数个的数的区别。偶数个整数的话刚好数全部用完,奇数个整数最后一个数空出来,也输出出来,后面没有数了(再使用后面的索引

    2024年02月09日
    浏览(9)
  • JNA调用C++动态库,返回二维数组

    JNA/JNI封装,C++开发交流,  showcode1024 1.下载eclipse创建一个项目,jdk选择1.8的版本,更高的需要配置下 动态库编译后放到system32下,system下是64位的,SysWow64是32位的

    2024年01月19日
    浏览(9)
  • C Primer Plus第六章编程练习答案

    C Primer Plus第六章编程练习答案

    学完C语言之后,我就去阅读《C Primer Plus》这本经典的C语言书籍,对每一章的编程练习题都做了相关的解答,仅仅代表着我个人的解答思路,如有错误,请各位大佬帮忙点出! 1.编写一个程序,创建一个包含26个元素的数组,并在其中储存26个小 写字母。然后打印数组的所有

    2024年02月06日
    浏览(11)
  • C Primer Plus第九章编程练习答案

    C Primer Plus第九章编程练习答案

    学完C语言之后,我就去阅读《C Primer Plus》这本经典的C语言书籍,对每一章的编程练习题都做了相关的解答,仅仅代表着我个人的解答思路,如有错误,请各位大佬帮忙点出! 1.设计一个函数min(x, y),返回两个double类型值的较小值。在一个简单 的驱动程序中测试该函数。 2

    2024年02月06日
    浏览(8)
  • C Primer Plus第十四章编程练习答案

    C Primer Plus第十四章编程练习答案

    学完C语言之后,我就去阅读《C Primer Plus》这本经典的C语言书籍,对每一章的编程练习题都做了相关的解答,仅仅代表着我个人的解答思路,如有错误,请各位大佬帮忙点出! 由于使用的是命令行参数常用于linux系统或者vscode,但此代码是运行于vs2022的,测试截图就不弄了。

    2024年02月07日
    浏览(17)
  • C Primer Plus第十六章编程练习答案

    C Primer Plus第十六章编程练习答案

    学完C语言之后,我就去阅读《C Primer Plus》这本经典的C语言书籍,对每一章的编程练习题都做了相关的解答,仅仅代表着我个人的解答思路,如有错误,请各位大佬帮忙点出! 由于使用的是命令行参数常用于linux系统或者vscode,但此代码是运行于vs2022的,测试截图就不弄了。

    2024年02月07日
    浏览(19)
  • C Primer Plus 第6版 编程练习 chapter 16

    C Primer Plus 第6版 编程练习 chapter 16

    开发一个包含你需要的预处理定义的头文件。 test.c diceroll.h 两个数的调和平均数这样计算:先得到两数的倒数,然后计算两个倒数的平均值,最后取计算结果的倒数。使用#define指令定义一个宏函数,,执行该运算。编写一个简单的程序测试该宏。 极坐标向量的模(即向量的

    2024年01月19日
    浏览(14)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包