关于数组传值,请教前辈。菜鸟先谢谢了

jamesyue2008 2015-06-27 09:26:57
运行结果,为什么不显示1, 2, 3?

void __fastcall TBookBa::Button1Click(TObject *Sender)
{
ShowI(Gt());
}
//---------------------------------------------------------------------------

int *TBookBa::Gt()
{
int GG[3] = {1,2,3};
return GG;
}

void TBookBa::ShowI(int *i)
{
UnicodeString BB;
BB = IntToStr(*i);
ShowMessage(BB);
BB = IntToStr(*(i+1));
ShowMessage(BB);
BB = IntToStr(*(i+2));
ShowMessage(BB);
}
...全文
89 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
宝龙哥 2015-06-27
  • 打赏
  • 举报
回复
数组指针不能这样传值,要在函数外建好数组后赋值
缘中人 2015-06-27
  • 打赏
  • 举报
回复
GG是局部变量,函数外已经销毁,地址无效。
缘中人 2015-06-27
  • 打赏
  • 举报
回复
int * Gt()
{
	int *GG = new int(3);
	GG[0] = 1;
	GG[1] = 2;
	GG[2] = 3;

//	 int GG[3] = {1, 2, 3};

	return GG;
}
Waiting4you 2015-06-27
  • 打赏
  • 举报
回复
楼主可以看下书上的C语言变量生命周期。 最简单的是GG变量改成静态,这样出了Gt函数后GG的内存不会被销毁。 int *TBookBa::Gt() { static int GG[3] = {1,2,3}; return GG; }

13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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