返回数组的函数怎么定义?

chenlei8110 2005-09-05 04:19:36
我想调用一个返回值是一个CString[]的函数。

不知道该函数怎么定义?

我是这么定义的,但是运行出错

CString* Array()
{
CString Array[3]={"fdf","gh","jh"};
return Array;
//return &Array[0];
这两种返回方式都不对,不知道怎么处理?

}



...全文
485 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenlei8110 2005-09-08
  • 打赏
  • 举报
回复
谢谢!
alen_ghl 2005-09-07
  • 打赏
  • 举报
回复
你说的Array还有效是具体是怎么个有效法?

删除指针应该在函数末尾DELETE
chenlei8110 2005-09-07
  • 打赏
  • 举报
回复
如果不是通过new /malloc来给指针变量赋值,是不是也需要手工释放呢?
hyg2008 2005-09-07
  • 打赏
  • 举报
回复
不是指针的问题,局部变量在栈中分配,函数返回后回释放.
new操作符在堆中分配,函数返回后不会释放.
chenlei8110 2005-09-07
  • 打赏
  • 举报
回复
指针变量Array是局部变量,为什么在离开函数CString *Array()后,没有被释放。为什么非指针的局部变量会释放?
chenlei8110 2005-09-06
  • 打赏
  • 举报
回复
CString* Array = new CString[3];
这也是一个局部变量,为什么调用完函数后,还有效?

这个指针应该在哪里删除?

CString *p=Array();
……
delete p;//为什么delete这个指针时出错。程序中断。


不好意思我的问题各位大虾们可能觉得很好笑,不过还是请多指教!
chenlei8110 2005-09-06
  • 打赏
  • 举报
回复
谢谢各位!
第一个问题应该怎么解答了?

CString* Array = new CString[3];
这也是一个局部变量,为什么调用完函数后,Array 还有效?

这个指针应该在哪里删除?


是不是指针的存储类型为静态的static
如果是动态的,它的生存期应该是在该函数里面。
我不太清楚请指教!
真糨糊 2005-09-06
  • 打赏
  • 举报
回复
CString* Array()
{
CString* Array = new CString[3];
....
return Array;
}
CString *p=Array();
if(p)
{
delete[] p;
p = NULL;
}
kvls 2005-09-06
  • 打赏
  • 举报
回复
返回CStringArray
真糨糊 2005-09-06
  • 打赏
  • 举报
回复
CString* Array()
{
CString* Array = new CString[3];
....
return Array;
}
CString *p=Array();
delete[] p;
p = NULL;
alen_ghl 2005-09-05
  • 打赏
  • 举报
回复
就是,函数里面定义的指针怎么能返回呢?
rabo 2005-09-05
  • 打赏
  • 举报
回复
用全局变量引用出来也行
forover 2005-09-05
  • 打赏
  • 举报
回复
CString Array[3]要在函数外面定义
newegg2002 2005-09-05
  • 打赏
  • 举报
回复
可以用MFC的集合类:
CStringArray.
CStrngArray ReturnCStringArray();

CStrngArray ReturnCStringArray()
{
CStringArray strArray;
.....//do some to strArray
return strArray;

}
不知道行不行...个人想法...

qfeng_zhao 2005-09-05
  • 打赏
  • 举报
回复
返回一局部对象的地址,当然出错
以上两种方法是可以,不过要注意由谁来delete
i_noname 2005-09-05
  • 打赏
  • 举报
回复
楼上正解,我的代码有问题。
真糨糊 2005-09-05
  • 打赏
  • 举报
回复
CString* Array()
{
CString* Array = new CString[3];
....
return Array;
}
i_noname 2005-09-05
  • 打赏
  • 举报
回复
这样当然不行,Array是栈变量,函数结束后内存就自动释放了,传回去的是一个野指针

CString* Array()
{
CString Array[3] = new CString[3];
....
return Array;
}

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧