首页 > 其他分享 >函数返回数组指针 看不太懂

函数返回数组指针 看不太懂

时间:2024-03-09 21:13:35浏览次数:29  
标签:返回 10 函数 int 数组 func 指针

有三种方法

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

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类型。
类似于

int arr [10];        //arr是一个含有10个整数的数组
int *p1[10];        //p1是一个含有10个指针的数组
int (*p2) [10]=&arr;    //p2是一个指针,它指向含有10个整数的数组

2.使用尾值返回类型

为了表示函数真正的返回类型跟在形参列表之后,我们在本应该出现返回类型的地方放置一个auto。

//func接受一个int类型的实参,返回一个指针,该指针指向含有10个整数的数组
auto func(int i)->int(*) [10];
//int(*) [10] 和数组的指针读法一样,先读小括号里面:是个指针类型,
//再读右边:指针指向一个含有10个元素的数组,
//最后读左边:元素的类型是int型。

因为我们把函数的返回类型放在了形参列表之后,所以可以清楚地看到func函数返回的是一个指针,并且该指针指向了含有10个整数的数组。

3.使用decltype
还有一种情况,如果我们知道函数返回的指针将指向哪个数组,就可以使用decltype关键字声明返回类型。

int odd[]={1,3,5,7,9};
int even[]={0,2,4,6,8};
//返回一个指针,该指针指向含有5个整数的数组
decltype(odd) *arrPtr(int i){
    return (i%2)?&odd:&even;
}

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

原文链接:https://blog.csdn.net/Firenze__/article/details/104065237

标签:返回,10,函数,int,数组,func,指针
From: https://www.cnblogs.com/uacs2024/p/18063306

相关文章

  • 7-9 找出不是两个数组共有的元素
    7-9找出不是两个数组共有的元素分数10作者张彤彧单位浙江大学给定两个整型数组,本题要求找出不是两者共有的元素。输入格式:输入分别在两行中给出两个整型数组,每行先给出正整数N(≤20),随后是N个整数,其间以空格分隔。输出格式:在一行中按照数字给出的顺序输出不是两数组共......
  • java8特性-函数式接口
    什么是函数式接口?只包含一个抽象方法的接口,称为函数式接口检验方法:  Java内置的4大核心函数式接口消费型接口Consumer<T>voidaccept(Tt)供给型接口Supplier<T>Tget()函数型接口Function(T,R)Rapply(Tt)断定型接口Predicate<T>booleantest(Tt)......
  • UE 共享指针 共享引用
    classFTestA{public: FTestA(){ UE_LOG(LogTemp,Warning,TEXT("FTestA构造")); } voidTestFun(){ UE_LOG(LogTemp,Warning,TEXT("FTestATestFun方法")); } ~FTestA(){ UE_LOG(LogTemp,Warning,TEXT("FTestA析构")); }};......
  • 代码随想录算法训练营第四十一天|01背包问题, 01背包问题—— 滚动数组,分割等和子集
    01背包问题,你该了解这些! 题目链接:46.携带研究材料(第六期模拟笔试)(kamacoder.com)思路:第一次遇到背包问题,好好记住吧。代码随想录(programmercarl.com)#include<bits/stdc++.h>usingnamespacestd;intmain(){intm,n;cin>>m>>n;vector<int>z(m);vec......
  • jQuery中使用箭头函数,调用$(this)失效?
    1.问题在jQuery中使用箭头函数,最后调用$(this)发现无效?$(function(){//鼠标经过$('.nav>li').mouseover(()=>{//$(this)jQuery当前元素this不要加引号//show()显示元素hide()隐藏元素$(this).children('ul').show();}......
  • MySql中SUM函数计算错误问题
    前言今天一个很久前做的项目突然找到我,说是之前做的项目中,页面上数据汇总和列表中的数据的总数存在对不上的问题。说是列表是对的,但是根据列表统计出来的数据要比正常小很多。排查这个项目已经好几年了,之前用了很久都是正常的,不可能会突然出问题了;我觉得这个统计肯定是没问题了......
  • python+pytest接口自动化之测试函数、测试类/测试方法的封装
    前言今天呢,笔者想和大家聊聊python+pytest接口自动化中将代码进行封装,只有将测试代码进行封装,才能被测试框架识别执行。例如单个接口的请求代码如下:importrequestsheaders={"user-agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,l......
  • 【力扣】子集II(回溯法)(排序函数的一种隐藏用法?)
    题目描述可以套回溯模版的题,但是在写的过程中发现,如果数组中有多个相同元素分散存在的话,就会有一些子集无法得到像这里的1,4,4,如果对数组从左到右枚举的话是无论如何都得不到的。对这样的数组使用排序函数后,造成的效果就是相同的元素都堆在了一起,这样就能正确地得到所有子集......
  • MYSQL学习笔记17: 流程控制函数(IF, CASE)
    流程控制函数(IF,CASE)ifselectif(true,'ok','error');selectif(false,'ok','error');/*相当于iftrue:ok;else:error;*/ifnullselectifnull('ok','default');selectifnull(......
  • MYSQL学习笔记15: 数值函数
    数值函数ceil向上取整(并不是四舍五入)selectceil(1.5);selectceil(2.1);floor向下取整selectfloor(3.9);selectfloor(2.0);mod取模(余数)selectmod(7,4);rand0-1的随机小数,不包括0和1selectrand();round四舍五入#参数2:保留的......