c++函数返回数组
来源:互联网 发布:淘宝怎么设置发货地址 编辑:程序博客网 时间:2024/05/16 22:30
前两天应聘,做了些笔试题。遇到返回值的问题。。涉及到返回数组。。回来后查了查资料总结如下。
不能返回局部数组,因为它是临时变量,暂存在栈区里面,函数调用结束,数组会被释放。
如果需要返回数组可以用如下3种方法:
(1)调用之前先创建数组,将数组的地址也就是指针作为参数传递进函数。
int *GetData(String S,int& arr[]){ int j=0; for(int i=1;i<S.Length();i++) { if(S.SubString(i,1)==".") { arr[j]=i; j++; } } return arr;//反不返回都行,可以直接使用参数}
(2)在函数中定义静态数组
#define MAX 1024char * getInfo(){static char info[MAX];……Your code……return info;}
(3)函数中定义数组指针,然后对指针进行分配空间,此时的内存空间是在堆区(注意要自行释放)
#define MAX 1024char *getInfo(){char *info;info=(char *)malloc(MAX*sizeof(char));……Your code……return info;}
另外:
局部对象可以返回
因为C++中使用临时复制对象来传值的缘故.例如: 局部string Str 对象,return Str;时C++会用一个临时复制对象来保存Str的值,接着Str的生存期结束,然后临时对象的值被赋给调用处,最后临时复制对象的生存期结束,通过汇编代码会看到返回的时候会再构造一个对象,最后析构2次,但是第二次析构的时候临时对象已经复制到调用处了。
004518E8 call dword ptr [__imp_std::basic_string<char,std::char_traits<char>,std::allocator<char> >::basic_string<char,std::char_traits<char>,std::allocator<char> > (47E7F0h)]
004518EE cmp esi,esp
004518F0 call @ILT+4760(__RTC_CheckEsp) (42529Dh)
004518F5 mov ecx,dword ptr [ebp-118h]
004518FB or ecx,1
004518FE mov dword ptr [ebp-118h],ecx
00451904 mov byte ptr [ebp-4],1
00451908 mov esi,esp
0045190A lea ecx,[ebp-4Ch]
0045190D call dword ptr [__imp_std::basic_string<char,std::char_traits<char>,std::allocator<char> >::~basic_string<char,std::char_traits<char>,std::allocator<char> > (47E7CCh)]
00451913 cmp esi,esp
00451915 call @ILT+4760(__RTC_CheckEsp) (42529Dh)
0045191A mov byte ptr [ebp-4],0
0045191E mov esi,esp
00451920 lea ecx,[ebp+0Ch]
00451923 call dword ptr[__imp_std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t>>::~basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >(47E79Ch)]
- c函数返回数组
- 【C++】从函数返回数组
- 【C++】C++函数返回数组
- C语言函数返回整形数组
- c/c++函数返回局部变量数组
- C语言自定义函数如何返回数组
- c语言数组参数和返回数组函数详解
- c语言,c++函数返回一个数组,二维数组
- C#函数的参数中返回结构数组
- 在C中如何使函数返回数组
- 在C/C++中如何使函数返回数组
- 在C中如何使函数返回数组
- C语言 通过指针从函数返回一个数组
- 关于C语言函数返回二维数组的做法
- 在C中如何使函数返回数组
- 在C中如何使函数返回数组
- 在C中如何使函数返回数组
- C`函数的返回值为一个二维数组
- uva 10780 Again Prime? No Time.
- ul和li简单语句实现DIV+CSS分两列(多列)布局显示(转)
- 第二章_算法分析
- Unix网络编程—环境搭建
- javascript优化方法集锦(不断更新)
- c++函数返回数组
- 如何学习51单片机/心得/KEIL4/DXP
- 注解的方式注入org.hibernate.SessionFactory到自定义的Dao中
- xcode快捷键
- Ubuntu Server 12.04 安装mysql 5.6.10
- java文件操作之PrintStream
- 老程序猿创业记(2):使用搜索技术
- java面试题转载
- Android 查看内存使用情况