全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:911
推到 Plurk!
推到 Facebook!

關於動態陣列?

尚未結案
nlj859
資深會員


發表:139
回覆:375
積分:322
註冊:2004-03-20

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-06-02 21:43:02 IP:163.28.xxx.xxx 未訂閱
我寫了一個這樣的程式碼:按下button1之後陣列的大小會一直累加,按下button2之後它會秀出所有陣列裡的值,請問我程式碼哪裡錯了?  
 
int *a;
int x;    //-----------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//-----------------------------------__fastcall TForm1::TForm1(TComponent* Owner)
  : TForm(Owner)
{
}
//-----------------------------------    void __fastcall TForm1::Button1Click(TObject *Sender)
{
  x  ;
  a=new int[x];
  a[x-1]=x;
  Edit1->Text=(IntToStr(a[x-1]));
}
//-----------------------------------    void __fastcall TForm1::FormCreate(TObject *Sender)
{
x=0;
}
//--------------------------------------    void __fastcall TForm1::Button2Click(TObject *Sender)
{
  for (int i=0;iText=Edit2->Text (IntToStr(a[i]));
}
segat80
一般會員


發表:5
回覆:24
積分:15
註冊:2003-02-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-06-03 12:19:26 IP:203.69.xxx.xxx 未訂閱
不清楚你說發生什麼問題,我測試是"可以執行", 請詳細說明一下遇到什麼問題.    
引言: int *a; int x; //----------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //-----------------------------------__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //----------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { x ; a=new int[x];<=== 這個部份每次都分配記憶體給a,卻沒有delet,程式結束會留下很多垃圾喔 a[x-1]=x; Edit1->Text=(IntToStr(a[x-1])); } //----------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { x=0; } //-------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { for (int i=0;iText=Edit2->Text (IntToStr(a[i])); }
= 努力,努力,往上爬 =
stanley
一般會員


發表:9
回覆:36
積分:14
註冊:2003-11-20

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-06-03 13:59:49 IP:61.219.xxx.xxx 未訂閱
每次按button1都會執行new這個指令, 所以你每執行一次, a就指向你這次new出來的空間, 與上次不同的空間, 你上次所指定的值也跟著遺失
nlj859
資深會員


發表:139
回覆:375
積分:322
註冊:2004-03-20

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-06-03 14:17:02 IP:163.28.xxx.xxx 未訂閱
sorry,我沒講清楚. 我在button裡面要秀出目前array a的全部內容,但現在都顯示一堆我看不懂一大串數字,請問程式該如何修改?哪裡錯誤了? 謝謝.
stanley
一般會員


發表:9
回覆:36
積分:14
註冊:2003-11-20

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-06-03 14:40:17 IP:61.219.xxx.xxx 未訂閱
你會看到亂碼是因為你沒給定初值, 若你有注意看, 最後一個數值是對的, 前面的值才是亂碼, 試試看下列的程式     
 
int *a,*b;
int x;    void __fastcall TForm1::Button1Click(TObject *Sender)
{
  x  ;
  a=new int[x];
  if(x!=1)
    memcpy(a,b,x*sizeof(int));
  a[x-1]=x;
  Edit1->Text=(IntToStr(a[x-1]));
  b = a;
}
//--------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
       for (int i=0;iText=Edit2->Text (IntToStr(a[i]));    }
//--------------------------------------------------------------------
系統時間:2024-09-30 3:44:03
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!