如何回傳一個陣列? |
尚未結案
|
nlj859
資深會員 發表:139 回覆:375 積分:322 註冊:2004-03-20 發送簡訊給我 |
底下程式碼該怎麼改才對? const int ArraySize=5;
AnsiString ar2[] get135(AnsiString ar[]); main()
{
AnsiString ss[ArraySize]={"1","2","3","4","5"};
AnsiString ar2[ArraySize];
..............
..............
ar2=get135(ss); } AnsiString ar2[] get135(AnsiString ar[])
{
.............
.............
return ar;
}
|
GGL
資深會員 發表:104 回覆:600 積分:335 註冊:2006-11-05 發送簡訊給我 |
|
nlj859
資深會員 發表:139 回覆:375 積分:322 註冊:2004-03-20 發送簡訊給我 |
我把原程式完整貼出好了.
const int ArraySize=5; void get135(AnsiString ar[]); void __fastcall TForm1::BitBtn1Click(TObject *Sender) { AnsiString ss[ArraySize]={"1","2","3","4","5"}; AnsiString total; total=""; for (int i=0;i<5;i ) total=total ss[i]; Label1->Caption=total; get135(ss); } //---------------------------------------------------------------- void get135(AnsiString ar[]) { AnsiString tt=""; for (int j=0;j<5;j=j 2) { tt=tt ar[j]; ar[j]=ar[j] 1; } Form1->Label2->Caption=tt; //return ar; }我要在最在把ar[]處理的結果回傳,請問宣告的地方和呼叫要如何表示? |
GGL
資深會員 發表:104 回覆:600 積分:335 註冊:2006-11-05 發送簡訊給我 |
|
nlj859
資深會員 發表:139 回覆:375 積分:322 註冊:2004-03-20 發送簡訊給我 |
|
GGL
資深會員 發表:104 回覆:600 積分:335 註冊:2006-11-05 發送簡訊給我 |
AnsiString temp,ar2[ArraySize]; temp=get135(ss); for(int i=0;i |
nlj859
資深會員 發表:139 回覆:375 積分:322 註冊:2004-03-20 發送簡訊給我 |
恩,非常謝謝你..
可能我的範例程式沒表示好.底下是改過比較好了解的程式.
const int ArraySize=5; AnsiString get135(AnsiString ar[]); AnsiString total; AnsiString ss2; //-------------------------------------------------------------------- void __fastcall TForm1::BitBtn1Click(TObject *Sender) { AnsiString ss[ArraySize]={"aa","bb","cc","dd","ee"}; total=""; for (int i=0;i<5;i ) total=total ss[i]; Label1->Caption=total; //原本的 ss2=get135(ss); Label8->Caption=ss2[0]; //回傳改過的再顯示到Label8 Label9->Caption=ss2[1]; //回傳改過的再顯示到Label9 Label10->Caption=ss2[2]; //回傳改過的再顯示到Label10 Label11->Caption=ss2[3]; //回傳改過的再顯示到Label11 Label12->Caption=ss2[4]; //回傳改過的再顯示到Label12 } //-------------------------------------------------------------------- AnsiString get135(AnsiString ar[]) { for (int j=0;j<5;j=j 5) ar[j]=ar[j] "1"; total=""; for (int k=0;k<5;k ) total=total ar[k]; Form1->Label2->Caption=total; //改過的 Form1->Label3->Caption=ar[0]; //改過的再顯示到Label3 Form1->Label4->Caption=ar[1]; //改過的再顯示到Label4 Form1->Label5->Caption=ar[2]; //改過的再顯示到Label5 Form1->Label6->Caption=ar[3]; //改過的再顯示到Label6 Form1->Label7->Caption=ar[4]; //改過的再顯示到Label7 return* ar ; }不過我的目的以字串陣列傳出,當回傳時,也是以一個字串陣列回傳,而不是把它弄成一整個AnsiString回傳,不知是否有辦法這樣傳? 謝謝. |
GGL
資深會員 發表:104 回覆:600 積分:335 註冊:2006-11-05 發送簡訊給我 |
我弄了很久...還是試不出來,以下的方法雖然有點濫...還是可以用
AnsiString ss2[5]; //宣告成全域變數
void __fastcall TForm1::Button1Click(TObject *Sender) { AnsiString total; AnsiString ss[5]={"aa","bb","cc","dd","ee"}; total=""; for (int i=0;i<5;i ) total=total ss[i]; Label1->Caption=total; //原本的 get135(ss); Label8->Caption=ss2[0]; //回傳改過的再顯示到Label8 Label9->Caption=ss2[1]; //回傳改過的再顯示到Label9 Label10->Caption=ss2[2]; //回傳改過的再顯示到Label10 Label11->Caption=ss2[3]; //回傳改過的再顯示到Label11 Label12->Caption=ss2[4]; //回傳改過的再顯示到Label12 } //--------------------------------------------------------------------------- AnsiString *get135(AnsiString * ar) { for (int j=0;j<5;j=j 5) ar[j]=ar[j] "1"; AnsiString total=""; for (int k=0;k<5;k ) total=total ar[k]; Form1->Label2->Caption=total; //改過的 Form1->Label3->Caption=ar[0]; //改過的再顯示到Label3 Form1->Label4->Caption=ar[1]; //改過的再顯示到Label4 Form1->Label5->Caption=ar[2]; //改過的再顯示到Label5 Form1->Label6->Caption=ar[3]; //改過的再顯示到Label6 Form1->Label7->Caption=ar[4]; //改過的再顯示到Label7 ss2[0]=ar[0]; ss2[1]=ar[1]; ss2[2]=ar[2]; ss2[3]=ar[3]; ss2[4]=ar[4]; } |
nlj859
資深會員 發表:139 回覆:375 積分:322 註冊:2004-03-20 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |