博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
返回数组指针的函数
阅读量:6245 次
发布时间:2019-06-22

本文共 1518 字,大约阅读时间需要 5 分钟。

首先,数组不能被拷贝,所以函数不能返回数组,但可以返回数组的指针或引用,返回数组的指针有一下几种方式:

1.使用类型别名

#include 
using namespace std;int b[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };typedef int type[10]; //或using type=int[10],type是类型别名type *sum(int(&a)[10]) { return &a; //不能返回局部变量的指针或引用,所以函数形参采 & }int main(int argc,char *argv[]){ int(*p)[10] = sum(b); int *a = *p; for (int i = 0; i < 10; i++) cout << *(a + i) << endl;; return 1;}

2.直接定义  

#include 
using namespace std;int b[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }; int(*sum(int(&a)[10]))[10] //数组的维度放在最后 { return &a; } int main(int argc,char *argv[]) { int(*p)[10] = sum(b); int *a = *p; for (int i = 0; i < 10; i++) cout << *a++<< endl;; return 1; }

3.使用auto

#include 
using namespace std;int b[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };auto sum(int(&a)[10])->int(*)[10] //auto fun(形参列表)->int(*)[10],将真正的类型写后面{ return &a;}int main(int argc,char *argv[]){ int(*p)[10] = sum(b); int *a = *p; for (int i = 0; i < 10; i++) cout << *a++<< endl;; return 1;}

4.使用decltype

#include 
using namespace std;int b[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };decltype(b) *sum(int(&a)[10]) //使用decltype{ return &a;}int main(int argc,char *argv[]){ int(*p)[10] = sum(b); int *a = *p; for (int i = 0; i < 10; i++) cout << *a++<< endl;; return 1;}

 

 

 

转载于:https://www.cnblogs.com/mrlsx/p/5554278.html

你可能感兴趣的文章
南京大学周志华教授当选欧洲科学院外籍院士
查看>>
计算机网络与Internet应用
查看>>
oracle在线迁移同步数据,数据库报错
查看>>
linux性能剖析工具
查看>>
flutter中的异步
查看>>
计算机高手也不能编出俄罗斯方块——计算机达人成长之路(16)
查看>>
# 2017-2018-1 20155224 《信息安全系统设计基础》第七周学习总结
查看>>
scikit-learn预处理实例之一:使用FunctionTransformer选择列
查看>>
Cassandra监控 - OpsCenter手册
查看>>
《AngularJS深度剖析与最佳实践》简介
查看>>
Android----------WindowManager
查看>>
通过DAC来连接SQL Server
查看>>
Oracle11G 卸载步骤
查看>>
Mars说光场(3)— 光场采集
查看>>
kettle与各数据库建立链接的链接字符串
查看>>
Android--调用系统照相机拍照与摄像
查看>>
【OpenCV学习】利用HandVu进行手部动作识别分析
查看>>
Ubuntu下安装配置JDK1.7
查看>>
AngularJS快速入门指南15:API
查看>>
安装惠普M1136打印机一直处于“新设备已连接”状态怎么办?
查看>>