定义返回数组引用(指针)的函数的几种方式
2015-03-06 00:15
477 查看
这个问题首先要搞清楚数组引用(指针)或者引用(指针)数组的区别:
定义返回数组引用(指针)的函数实现如下:
注意形参类型和函数返回类型都是数组的引用
以上指针同理。
运行结果:
总结有4种方式实现返回数组引用(指针)的函数:
普通式
typedef式
尾置返回类型
类型推导式
那么如何定义返回引用(指针)数组的函数呢?
很明显c++函数不能返回多个值(引用或指针),可以使用c++11新的标准规定,返回initializer_list,或者通过形参返回。
int (&vp)[10]; //vp是一个含有10个整数的数组的引用 int &pv[10]; //pv是一个含有10个整数引用的数组
定义返回数组引用(指针)的函数实现如下:
/*定义函数返回string数组引用*/ #include <iostream> #include <string> std::string str[2] = { "test", "hello", }; /*普通式*/ std::string (&func(std::string (&str)[2]))[2] { str[0] = "common"; return str; } /*typedef别名式*/ typedef std::string STR2[2]; STR2& func1(std::string (&str)[2]) { str[0] = "typedef"; return str; } /* 尾置返回类型 * use c++11 */ auto func2(std::string (&str)[2]) -> std::string (&)[2] { str[0] = "auto"; return str; } /* 类型推到式 * use c++11 */ decltype(str)& func3(std::string (&str)[2]) { str[0] = "decltype"; return str; } int main() { func(str); std::cout << str[0] << std::endl; std::cout << str[1] << std::endl; func1(str); std::cout << str[0] << std::endl; std::cout << str[1] << std::endl; func2(str); std::cout << str[0] << std::endl; std::cout << str[1] << std::endl; func3(str); std::cout << str[0] << std::endl; std::cout << str[1] << std::endl; return 0; }
注意形参类型和函数返回类型都是数组的引用
以上指针同理。
运行结果:
$ g++ -std=c++0x -Wall func_ret.cpp $ ./a.out common hello typedef hello auto hello decltype hello
总结有4种方式实现返回数组引用(指针)的函数:
普通式
typedef式
尾置返回类型
类型推导式
那么如何定义返回引用(指针)数组的函数呢?
很明显c++函数不能返回多个值(引用或指针),可以使用c++11新的标准规定,返回initializer_list,或者通过形参返回。
相关文章推荐
- 基类中定义的虚函数在派生类中重新定义时,其函数原型,包括返回类型、函数名、参数个数、参数类型及参数的先后顺序,都必须与基类中的原型完全相同 but------> 可以返回派生类对象的引用或指针
- 两种方式定义返回函数指针的函数
- c++函数内部可以返回函数内部定义的指针 但是不能返回函数内部定义的数组
- 用变量a给出下面的定义:一个有10个指针的数组,该指针指向一个函数,该函数有一个整形参数并返回一个整型数
- effective C++笔记之条款31、32: 千万不要返回局部对象的引用,也不要返回函数内部用new初始化的指针所指对象的引用、尽可能地推迟变量的定义
- 定义struct/struct定义在哪里/函数返回指针类型/指针数组与数组指针/{}里是局部定义/fabs、abs
- [Happy Coding] 函数返回数组指针和数组引用
- 条款31: 千万不要返回局部对象的引用,也不要返回函数内部用new初始化的指针的引用 (转自effective c++ second edition)
- 可以返回函数内部定义的指针
- javascript定义函数的几种方式
- C语言 通过指针从函数返回一个数组
- 函数返回指针的几种方案
- 函数指针数组与返回数组指针的函数
- 对引用和指针使用以及函数返回引用和指针类型的理解
- 将函数的返回值引用定义为引用
- php数组函数序列之end() - 移动数组内部指针到最后一个元素,并返回该元素的值
- 函数返回引用和指针类型
- 函数 千万不要返回“局部对象”的引用或者指针
- 关于函数指针数组与返回数组指针的函数
- 在matlab中,数组的指数运算有好几种定义方式