zoukankan      html  css  js  c++  java
  • 函数返回数组的指针

    一、概述

    函数不能数组,但是可以返回数组的指针。

    由于定义一个返回数组的指针的函数比较烦琐(即使定义了也很难看懂),所以我们要介绍一些简化方法。

    二、使用类型别名

    方法:

    	//way1
    	typedef int arrT[10];	//arrT是类型别名,表示的类型是一个数组(含有10个整数) 
    	//way2
    	using arrT = int[10]; 	//同上,arrT是含有10个整数的数组的别名
    

    注:是数组的别名

    于是我们可以这样定义函数:

            arrT* func(形参);     
    

    解读:func函数返回数组的指针,也即返回一个指向包含10个整数的数组的指针。

    三、不使用类型别名

    1. 数组的指针

    形式:

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

    注:int *p[10];p是一个含有10个指针的数组

    2. 定义返回数组的指针的函数

    形式:

            int (*func(parameter_list))[10];  //若去掉括号,则返回的类型是指针的数组
    

     

    四、使用尾置返回类型

    任何函数的定义都能使用尾置返回,但是这种形式对于返回类型比较复杂的函数最有效。

    形式:

    	//func函数返回的是一个指针,并且该指针指向了含有10个整数的数组 
    	auto func(parameter_list) -> int(*)[10];	//在本该出现返回类型的地方象征性地放了一个auto
    

    解读:我们把函数的返回类型放在了形参列表之后,故可以清楚地看到func函数返回的是一个指针。

    五、使用decltype

    适用于:知道函数返回的指针将指向哪个数组

    用法:使用decltype关键字声明返回类型

    示例:

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

    解读:func使用关键字decltype表示它的返回类型是个指针,并且该指针所指的对象与odd的类型一致。因为odd是数组,所以func返回一个指向包含5个整数的数组的指针。

    注意:decltype不负责把数组类型转换成对应的指针,所以decltype的结果是个数组,要想表示func返回指针还必须加上一个*符号。

     

  • 相关阅读:
    spring boot单元测试之七:用mockmvc模拟session(spring boot 2.4.3)
    spring boot单元测试之六:用mockmvc模拟cookie(spring boot 2.4.3)
    sql join 注意事项
    见路不走,即见因果
    presto sql 经典sql 应用
    别拿你的职业去拔高你个人的规格, 让人轻看
    《遥远的救世主》经典台词
    《卜算子·自嘲》
    天道连续剧 丁元英语录
    shell diff + kettle = mail 预警
  • 原文地址:https://www.cnblogs.com/xzxl/p/7662874.html
Copyright © 2011-2022 走看看