首页 > 编程语言 >C++ 返回数组指针简单测试

C++ 返回数组指针简单测试

时间:2024-07-18 14:31:54浏览次数:13  
标签:ARR 12 int arr C++ 数组 SIZE 指针

C++ 返回数组指针简单测试:

#include <iostream>

static const size_t ARR_SIZE = 10;
static int arr[ARR_SIZE];

// 更新数组
#define UPDATE_ARR_DATA(i)    for (size_t j = 0; j < ARR_SIZE; ++j)\
                              {\
                                  arr[j] = j * i;\
                              }\
                              return &arr;

// 遍历数组
#define iterate_arr(arr_ptr)  for (int i = 0; i < ARR_SIZE; ++i)\
                              {\
                                 std::cout << (*arr_ptr)[i] << std::endl;\
                              }

/* (*arr_ptr) 这个先解引用数组,返回的是数组指针。 */

// 返回数组指针的函数
static int(*func(int i))[ARR_SIZE]
{
    UPDATE_ARR_DATA(i)
}

    // typedef 类型别名
typedef int arr_t[ARR_SIZE];
static arr_t* func_t(int i)
{
    UPDATE_ARR_DATA(i)
}

// 新标准别名
using arr_alias = int[ARR_SIZE];
static arr_alias* func_alias(int i)
{
    UPDATE_ARR_DATA(i)
}

// 尾置返回类型 trailing return type
static auto func_trailing(int i) -> int(*)[ARR_SIZE]
{
    UPDATE_ARR_DATA(i)
}

static decltype(arr)* func_decltype(int i)
{
    UPDATE_ARR_DATA(i)
}

int main()
{
    std::cout << std::endl << "/******原始声明******/" << std::endl << std::endl;
    auto v_arr = func(2); // 返回[10]数组的指针
    iterate_arr(v_arr)

    std::cout << std::endl << "/******typedef 别名******/" << std::endl << std::endl;
    auto v_arr_t = func_t(3);
    iterate_arr(v_arr_t)

    std::cout << std::endl << "/******using 别名******/" << std::endl << std::endl;
    auto v_arr_alias = func_t(4);
    iterate_arr(v_arr_alias)

    std::cout << std::endl << "/******尾置返回类型******/" << std::endl << std::endl;
    auto v_arr_trail = func_trailing(5);
    iterate_arr(v_arr_trail)

    std::cout << std::endl << "/******decltype******/" << std::endl << std::endl;
    auto v_arr_decltype = func_decltype(6);
    iterate_arr(v_arr_decltype)

    return EXIT_SUCCESS;
}

输出:

/******原始声明******/

0
2
4
6
8
10
12
14
16
18

/******typedef 别名******/

0
3
6
9
12
15
18
21
24
27

/******using 别名******/

0
4
8
12
16
20
24
28
32
36

/******尾置返回类型******/

0
5
10
15
20
25
30
35
40
45

/******decltype******/

0
6
12
18
24
30
36
42
48
54




参考:《C++ Primer》P206

标签:ARR,12,int,arr,C++,数组,SIZE,指针
From: https://www.cnblogs.com/huvjie/p/18309433

相关文章

  • C 语言实例 - 数组拆分与合并
    将一个数组拆分为两个数组,一个为奇数数组,一个为偶数数组实例#include<stdio.h>intmain(){intarray[10]={0,1,2,3,4,5,6,7,8,9};inteven[10],odd[10];intloop,e,d;e=d=0;for(loop=0;loop<10;loop++){......
  • day2 双指针与滑动窗口
    任务977.有序数组的平方给你一个按非递减顺序排序的整数数组nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。思路由于平方后最大值只可能出现在左右两边,所以每次取左右两边的较大值加入到新数组的尾部。故采用双指针法,一个指向尾部,一个指向头部,每次取符合条件......
  • Python数据可视化之numpy的11个常用的创建数组的函数
    numpy库在处理成千上万的数据时,Python的1维列表已经不适合来对数据进行处理,效率会很慢,所以numpy就诞生了,他可以将列表变成数组,而数组可以是1维、2维、3维甚至更高纬度,可用于存储和处理大型的矩阵,此外numpy提供了大量的数学函数,包括数学、逻辑、形态操作、排序、选择,输出和......
  • c++中push_back和emplace_back
     push_back 和 emplace_back 都是用于在容器(如 std::vector, std::deque 等)的末尾添加元素的方法,但它们在实现细节和性能上有显著区别:构造方式:push_back 首先在容器外部构造一个完整的对象,然后将这个对象移动或拷贝到容器的末尾。emplace_back 直接在容器管理的......
  • 获取数组中出现最多的元素
    1、方法一:需要三次循环,缺点:大量的循环操作会消耗大量的计算资源、代码多   constarr=['a','c','b','1','9','b','sdf','6','b','aaaa','汉字','汉字','sdf......
  • iOS开发基础131-isa指针
    iOS中isa指针是Objective-C对象内部的一个重要概念,它是实现对象与类之间关系的核心机制。深入理解isa指针对掌握Objective-C的底层运行机制和对象模型非常重要。1.什么是isa指针每个Objective-C对象都有一个isa指针,它指向这个对象所属的类。类本身也有一个isa指针,指向其元类(met......
  • C#调用C++库,进行串口通信
    1、添加C++接口实现,将dll放置在运行路径下。dll文件下载:https://files.cnblogs.com/files/ZM191018/SerialPortLib.7z?t=1721271982&download=true[DllImport("SerialPortLib.dll",CharSet=CharSet.Unicode,CallingConvention=CallingConvention.StdCall)]......
  • 高质量C/C++编程指南总结(十)—— const 用法
    const的用法1)用const修饰函数的输入参数如果输入的参数采用“指针传递”,那么加const修饰可以防止意外地改动该指针,起到保护作用。如果输入参数采用“值传递”,由于函数将自动产生临时变量用于复制该参数,该输入参数本来就无需保护,所以不要加const修饰。对于非内部数据类......
  • 提升PHP并行处理效率:深入解析数组排序算法及优化策略
    本文由ChatMoney团队出品在PHP开发中,数组排序是一个常见的操作。随着互联网技术的不断发展,对数据处理速度和效率的要求越来越高,如何在保证排序质量的同时提高处理速度成为了一个值得探讨的问题。本文将分析PHP数组排序算法对并行处理的影响,并提供一些优化建议。一、PHP......
  • PHP 数组排序算法对并行处理的影响
    本文由ChatMoney团队出品在PHP开发中,数组排序是一个常见的操作。随着互联网技术的不断发展,对数据处理速度和效率的要求越来越高,如何在保证排序质量的同时提高处理速度成为了一个值得探讨的问题。本文将分析PHP数组排序算法对并行处理的影响,并提供一些优化建议。一、PHP......