下面程式只能得到 name[0],錯在哪里?name字串陣列的大小在getname()中才能確定,應該如何正確使用字串陣列作為輸出引數?望指點
void getname( String **name )
{
int size=10 ;
*name =new String [size] ;
*mame[0] ="aa";
*name[1] ="bb";
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
String * name ;
getname(&name)
Memo1->Lines->Add( name[0]);
Memo1->Lines->Add( name[1]);
}
uj5u.com熱心網友回復:
*name =new String [size] ; 這句錯了改成:name =new String [size] ; 才對
你的例子,用TStrings 來做更好:
void getname( TStrings *Items )
{
Items->Add("aa");
Items->Add("bb");
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
getname( Memo1->Lines) ;
}
uj5u.com熱心網友回復:
好象也不對的
uj5u.com熱心網友回復:
void getname( String **name ){
int size=10 ;
*name =new String [size] ;
( *mame)[0] ="aa";
(*name)[1] ="bb";
}
或者:
void getname( String *&name )
{
int size=10 ;
*name =new String [size] ;
mame[0] ="aa";
name[1] ="bb";
}
呼叫就不加&
String *Name ;
getname(Name)
uj5u.com熱心網友回復:
指標不是這樣用的!void getname(引數)可以是std::vector<String> *,TStrings * 都可以std::vector<String> &,TStrings & !
uj5u.com熱心網友回復:
樓上的已經很好的解決了你的問題,用你的代碼,下面這樣改,可能比較適合你的想法
void getname( TStringList *slt )
{
slt->Add("aa");
slt->Add("bb");
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TStringList *slt=new TStringList;
getname(slt);
for(int i=0;i<slt->Count;i++)
{
Memo1->Lines->Add( slt->Strings[i]);
}
delete slt;
}
uj5u.com熱心網友回復:
你這是硬套的c的char *,要么直接上char *,要么樓上幾位的做法!uj5u.com熱心網友回復:
學習學習,頂一下樓上轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/122218.html
標籤:茶館
上一篇:VC6 NTDLL.DLL 0XC0000005:access Violation錯誤
下一篇:C++的一個問題
