動態宣告變成指標 |
尚未結案
|
liyanzi
一般會員 發表:51 回覆:45 積分:19 註冊:2005-01-24 發送簡訊給我 |
請問各位大大~~ 以下是我宣告的結構
struct DList
{
String roadname ;//用來存道路名稱
int num ;
int number ;//目前沒有用到
int road_numeral ;//用來存一條距離用的
int an_road_numeral ;//用來存另一條距離用的
DList *road ;//用來連接下一條道路用的
DList *an_road ;//用來連接另下一條道路用的
};
DList *head, *temp_road[ 10 ], *find_head, *find_temp[ 10 ] ; 想要把*temp_road[ 10 ], 裡面的值變成動態宣告
int roadcount=10;
DList *temp_road=new DList [roadcount]; 但是temp_road這個值~~會變成不是指標 因為temp_road宣告,在後面都需要當成指標來使用 要請問說~~動態宣告之後~如果變成指標?
|
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
指標陣列不是這樣要記憶體:
DList *temp_road=new DList [roadcount];
快速寫了一下,驗測無誤,請參考!
< class="code">
int i;
for ( i = 0 ; i < 10 ; i )
temp_road[i] = new DList;
for ( i = 0 ; i < 10 ; i )
if ( temp_road[i] != NULL )
delete temp_road[i];
----------------------------------------------
We will either find a way, or make one. -Hannibal -。
|
鈴鐺
初階會員 發表:33 回覆:81 積分:35 註冊:2002-03-13 發送簡訊給我 |
你寫的
DList *temp_road[ 10 ]
意思為 temp_road 是一個 array, 有 10 個 item, 每個 item 存一個指標.
我換一個簡單例子(以 int 替代 DList, 因為以你的問題不需要提到 DList) int *pn[10]; 可以用
n = 10;
int **pn= new (int *)[n];
當然, delete 時,
delete [] pn; // 不要寫成 delete pn; 寫好用開啟 compile 選項中的 codeguard, 讓它幫你檢查你是否正確釋放記憶體.
|
liyanzi
一般會員 發表:51 回覆:45 積分:19 註冊:2005-01-24 發送簡訊給我 |
|
rogan321
高階會員 發表:21 回覆:307 積分:200 註冊:2003-05-15 發送簡訊給我 |
|
liyanzi
一般會員 發表:51 回覆:45 積分:19 註冊:2005-01-24 發送簡訊給我 |
|
liyanzi
一般會員 發表:51 回覆:45 積分:19 註冊:2005-01-24 發送簡訊給我 |
那我想請問各位大大 我已經宣告全域變數
int roadcount=0; 而在form1裡
//-----------------------------------------------------
void__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{ Form1->db2_ADOTable1->Open();
roadcount= Form1->db2_ADOTable1->RecordCount; }
//----------------------------------------------------------
DList *temp_road=new DList [roadcount]; 而在下列函式裡~~需要用到tmep
//------------------------------------------------------ void find_endroad( DList *pointer, String start_road ) { DList *temp[7], *ptr; int temp_count = 0 ; save_tail = save_head ; for ( int i = 0; i < 7; i ) temp[ i ] = new DList ; ptr = pointer ; while ( ptr -> road_numeral != 0 || ptr -> an_road_numeral != 0 ) { if ( ptr -> road_numeral != 0 && ptr -> an_road_numeral != 0 ) { if ( ptr -> roadname != start_road && ptr -> roadname != Form1 -> ComboBox1 -> Text ) creat_combobox( ptr -> roadname ) ; temp[ temp_count ] = ptr -> an_road ; temp[ temp_count-1] -> roadname = temp[ temp_count-1] -> roadname ; ptr = ptr -> road ; } else if ( ptr -> an_road_numeral == 0 ) { if ( ptr -> roadname != start_road && ptr -> roadname != Form1 -> ComboBox1 -> Text ) creat_combobox( ptr -> roadname ) ; ptr = ptr -> road ; } else { if ( ptr -> roadname != start_road && ptr -> roadname != Form1 -> ComboBox1 -> Text ) creat_combobox( ptr -> roadname ) ; ptr = ptr -> an_road ; } } creat_combobox( ptr -> roadname ) ; *temp_road = *temp ; counti = temp_count ;<------此行要當成指標用 } //-------------------------------------------------------我想要動態宣告變成指標~~是要怎麼寫?? 發表人 - liyanzi 於 2005/08/17 13:46:26 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |