1.返回一维数组

  • 1.使用static
#include <iostream>
using namespace std;int* function()
{static int arr[3] = { 0, 1, 2};return arr;
}
int main()
{int *arr = function();cout << arr[0] << endl;cout << arr[1] << endl;cout << arr[2] << endl;
}
  • 2.使用new
#include <iostream>
using namespace std;int* function()
{int* arr= new int[3]{ 0, 1, 2};return arr;
}
int main()
{int *arr = function();cout << arr[0] << endl;cout << arr[1] << endl;cout << arr[2] << endl;
}

使用引用

#include <iostream>
using namespace std;
const int N = 3;
int(&func())[N];
int (&func())[N]
{static int arr[N]{0, 1, 2};return arr;
}
int main()
{// int*&&p = func(); //  also OK, why?int *p = func();cout << p[0] << endl;cout << p[1] << endl;cout << p[2] << endl;
}

简化版本

#include <iostream>
using namespace std;
const int N = 3;
typedef int intarr[N];
intarr &func()  //返回数组的引用
{static int arr[N]{0, 1, 2};return arr;
}
int main()
{int *p = func();cout << p[0] << endl;cout << p[1] << endl;cout << p[2] << endl;
}

使用auto关键字

#include <iostream>
using namespace std;
const int N = 3;
auto func()->int(&)[N]  //返回数组的引用
{static int arr[N]{0, 1, 2};return arr;
}
int main()
{int *p = func();cout << p[0] << endl;cout << p[1] << endl;cout << p[2] << endl;
}

使用decltype关键字

#include <iostream>
using namespace std;
const int N = 3;
int arra[N];decltype(arra)& func() //返回数组的引用
{static int arr[N]{0, 1, 2};return arr;
}
int main()
{int *p = func();cout << p[0] << endl;cout << p[1] << endl;cout << p[2] << endl;
}

2.返回二维数组

  • 1.使用动态数组
#include <iostream>
using namespace std;
const int N = 3;
void printArray(int** arr)
{for(int i = 0;i<N;++i){for(int j = 0;j<N;++j){cout << arr[i][j];}cout << endl;}
}
int** getArray()
{int** arr = new int*[N];for(int i=0;i<N;++i){arr[i] = new int[N];for(int j=0;j<N;++j){arr[i][j] = i+j;}}return arr;
}int main()
{int **arr = getArray();printArray(arr);return 0;
}
  • 2.使用static
#include <iostream>
using namespace std;
const int N = 3;
void printArray(int arr[][N])
{for(int i = 0;i<N;++i){for(int j = 0;j<N;++j){cout << arr[i][j];}cout << endl;}
}
int (*(getArray)())[N]  // int (*getArray())[N]也可以
{static int arr[N][N] = {{0,1,2},{3,4,5},{6,7,8}};return arr;
}int main()
{int (*arr)[N] ;arr = getArray();printArray(arr);return 0;
}

简化版本

#include <iostream>
using namespace std;
const int N = 3;
void printArray(int arr[][N])
{for(int i = 0;i<N;++i){for(int j = 0;j<N;++j){cout << arr[i][j];}cout << endl;}
}
typedef int (*DoublePointer)[N];
DoublePointer getArray()
{static int arr[N][N] = {{0,1,2},{3,4,5},{6,7,8}};return arr;
}int main()
{int (*arr)[N] ;arr = getArray();printArray(arr);return 0;
}
  • 3.使用struct
#include <iostream>
using namespace std;
const int N = 3;struct ArrStruct
{int arr[N][N];
};void printArray(ArrStruct var)
{for(int i = 0;i<N;++i){for(int j = 0;j<N;++j){cout << var.arr[i][j];}cout << endl;}
}ArrStruct getArray()
{ArrStruct var;for(int i = 0;i<N;++i){for(int j = 0;j<N;++j){var.arr[i][j] = i + j;}}return var;
}int main()
{ArrStruct arr;arr = getArray();printArray(arr);return 0;
}

C++基础知识(十)函数返回数组相关推荐

  1. 【转】C 从函数返回数组

    http://www.runoob.com/cprogramming/c-return-arrays-from-function.html C 从函数返回数组 C 数组 C 语言不允许返回一个完整的数 ...

  2. linux shell 字符串 数组,bash shell函数返回数组字符串

    #!/bin/bash # script:getselfvar.sh # 每个脚本中都在末尾追加了一段特殊的域名ip序列,需要将这段序列存放到数组变量中,供 # 脚本使用,例子中的ip和域名是处理过的 ...

  3. C++:C++语言入门级基础知识考察点回顾之数组、指针

    C++:C++语言入门级基础知识考察点回顾之数组.指针 目录 C++的数组.字符串 1.数组 1.1.声明数组 1.2.一维数组的应

  4. c语言怎么返回数组,c++从函数返回数组的方法代码

    c++如何从函数返回数组? C++ 从函数返回数组 C++ 不允许返回一个完整的数组作为函数的参数.但是,您可以通过指定不带索引的数组名来返回一个指向数组的指针. 如果您想要从函数返回一个一维数组,您 ...

  5. matlab二重指针,VC++中函数返回数组指针或者带指针的结构体的编译方式是否可取? - 程序语言 - 小木虫 - 学术 科研 互动社区...

    libralibra 构造函数+析构函数应该是比较正规的做法吧, 你的结构体/类被提早释放的问题,是不是那个结构体是局部变量,当超出作用域时对象被销毁,如果存在析构函数,会被默认调用, 如果你返回结构 ...

  6. 关于C语言函数返回数组的问题【转】

    (转自:https://blog.csdn.net/earbao/article/details/53401800) 关于C语言函数返回一个数组 c语言中函数不能直接返回一个数组,但是可以用其他方式实 ...

  7. c语言在函数中返回数组,关于C语言函数返回数组的问题

    关于C语言函数返回一个数组 c语言中函数不能直接返回一个数组,但是可以用其他方式实现类似功能,不过需要注意: 1.该数组不能是返回函数的局部变量数组,因为局部变量数组在退出函数后会被释放. 可以是全局 ...

  8. c语言中自定义函数返回数组,C语言自定义函数返回数组的方法(图文详解)

    C语言自定义函数返回数组的方法(图文详解) 最近看到一些同学问题,有提到说:如何在一个函数中返回数组呢? 能否直接在自定义 函数中,写成char *类型返回值,直接返回呢?,代码如下: 直接返回str ...

  9. vb.net函数返回数组

    今天写了一个程序需要函数返回数组,看了别的网友的程序发现有bug,特此记录一下 返回函数写法 Private Function Fun_Fp32ToByte(ByVal fp32 As Single) ...

  10. c 语言 函数返回数组_如何在C ++函数中返回数组

    c 语言 函数返回数组 介绍 (Introduction) In this tutorial, we are going to understand how we can return an arra ...

最新文章

  1. SQL Server 学习系列之五
  2. 【Java进阶】Elasticsearch应用之京东搜索
  3. flink中写入行存储、列存储时设定checkpoint多久时间间隔另存一个新文件
  4. CSS padding margin border属性讲解
  5. Java 并发编程小册整理好了
  6. python 基础 --数字、列表、元组、字典、字符串
  7. C - Copying Books (POJ - 1505)
  8. 阿里云DataV与百度Sugar使用比较
  9. 动态网页抓取数据软件
  10. 项目质量管理—七种基本质量工具
  11. 坐拥百度/阿里/腾讯,这家车载导航上市公司的营收却一路下挫?
  12. Android 解决华为手机图片底色变绿问题
  13. VideoSolo Blu ray Player for Mac(mac蓝光播放器)
  14. 渗透测试面试问题集合(转载自己看,链接在开头)
  15. tushare pro的token凭证码设置教程详解
  16. 利用ENVI的ROI统计影像信息
  17. shell 语言:grep的用法;条件语句的用法
  18. Far planner 代码系列(33) 关于real_world_contour和contour_graph
  19. 书籍《FPS关卡设计》笔记(一)
  20. Docker安装RabbitMQ——基于docker-compose工具

热门文章

  1. centos 7.xx 安装LAMP环境
  2. 快牛策略——计算机应用领域
  3. 解决baidupcs-go登陆错误
  4. java ecdh_java-ECDH使用Android KeyStore生成的私钥
  5. 将您重定向的次数过多什么意思_Linux重定向
  6. 1052 Linked List Sorting 分数 25
  7. 第二章 第八节:列表的增删改查
  8. virtualbox ubuntu20.04 配置共享文件夹
  9. 使用线性回归构建波士顿房价预测模型
  10. 在cube ui中使用better-scroll 自定义下拉刷新和上拉加载内容