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

這段程式碼有問題嗎?

答題得分者是:pcboy
wu330033
一般會員


發表:29
回覆:28
積分:11
註冊:2007-10-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-03-19 09:14:27 IP:140.124.xxx.xxx 訂閱
struct boundary
{
int **boundary_coordinate;
int no_of_boundary;
};
//---------------------------------------------------------------------------
struct boundary * __fastcall TForm1::B(void)
{
struct boundary *a;
a=new boundary;
a->boundary_coordinate=new int *[1800];
for (int j=0; j<2; j )
{
a->boundary_coordinate[j]=new int [2];
}
a->boundary_coordinate[1][1]=8;
ShowMessage(a->boundary_coordinate[1][1]);
return a;
}

//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
struct boundary *n; n=B();
}
//---------------------------------------------------------------------------
小弟是新手,請各位幫我看一下上面這段程式哪裡寫的不好呢?
另外這段程式碼雖然可以執行,但是複製到大型程式去修改時
就會出錯,而且很奇怪的一點,大型程式裡他竟然不讓我執行
a=new boundary; 這一行說 為什麼呢?
編輯記錄
wu330033 重新編輯於 2008-03-19 09:20:39, 註解 無‧
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-03-19 10:57:31 IP:61.220.xxx.xxx 訂閱
> 但是複製到大型程式去修改時
> 就會出錯,而且很奇怪的一點,大型程式裡他竟然不讓我執行
> a=new boundary; 這一行說 為什麼呢?
錯誤訊息是甚麼 ?
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
wu330033
一般會員


發表:29
回覆:28
積分:11
註冊:2007-10-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-03-19 17:16:35 IP:140.124.xxx.xxx 訂閱
[C++ Error] inspection_form.cpp(1037): E2303 Type name expected
[C Error] inspection_form.cpp(1037): E2034 Cannot convert 'int *' to 'boundary *'
[C Error] inspection_form.cpp(1037): E2141 Declaration syntax error
[C Error] inspection_form.cpp(2883): E2451 Undefined symbol 'e'

1037那行就是 struct boundary *a=new boundary;
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-03-19 17:41:24 IP:61.220.xxx.xxx 訂閱
struct boundary 是否在  a=new boundary; 之前宣告了 ?
a 是否已經在別地方宣告成為 int 了 ?
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
wu330033
一般會員


發表:29
回覆:28
積分:11
註冊:2007-10-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-03-19 18:23:16 IP:140.124.xxx.xxx 訂閱
1.struct boundary 是否在  a=new boundary; 之前宣告了 ?

恩struct boundary 我放在前面

2. a 是否已經在別地方宣告成為 int 了 ?

我想應該不是這個問題,因為我把a換成別的名稱他還是不讓我過
wu330033
一般會員


發表:29
回覆:28
積分:11
註冊:2007-10-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-03-19 18:42:48 IP:140.124.xxx.xxx 訂閱
我知道了不是a名稱重覆
是boundary重覆...

順便問一下我的二宣告的二維陣列能這樣存取嗎?
a->boundary_coordinate[i][0]=丟一個值
a->boundary_coordinate[i][1]

原本的問題解決了...但又在這邊出錯
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#7 引用回覆 回覆 發表時間:2008-03-19 19:12:20 IP:203.67.xxx.xxx 訂閱
錯誤訊息呢?
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
wu330033
一般會員


發表:29
回覆:28
積分:11
註冊:2007-10-15

發送簡訊給我
#8 引用回覆 回覆 發表時間:2008-03-19 19:35:04 IP:140.124.xxx.xxx 訂閱
struct boundary_str *asdic=new  boundary_str;
asdic->boundary_coordinate=new int *[1800];
for (int j=0; j<2; j )
{
asdic->boundary_coordinate[j]=new int [2];
}
for (int i=0; i<1800; i )
{
for (int j=0; j<2; j )
{
asdic->boundary_coordinate[i][j]=0; //這行出錯,但沒有錯誤訊息,只有執行時跳出來到這一行
}
}
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#9 引用回覆 回覆 發表時間:2008-03-19 21:06:02 IP:203.67.xxx.xxx 訂閱
> 只有執行時跳出來到這一行
從哪一行跳到這一行 ?

單步追蹤, 看看陣列值是否正確

------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
wu330033
一般會員


發表:29
回覆:28
積分:11
註冊:2007-10-15

發送簡訊給我
#10 引用回覆 回覆 發表時間:2008-03-24 23:09:40 IP:140.124.xxx.xxx 訂閱
asdic->boundary_coordinate=new int *[2];
for (int j=0; j<2; j )
{
asdic->boundary_coordinate[j]=new int [1800];
}

我程式改成這樣就能跑了
這是什麼原因阿?
wu330033
一般會員


發表:29
回覆:28
積分:11
註冊:2007-10-15

發送簡訊給我
#11 引用回覆 回覆 發表時間:2008-03-24 23:23:23 IP:140.124.xxx.xxx 訂閱
沒事了...我知道了
謝謝版主
系統時間:2024-03-28 22:33:05
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!