[問題] 一個ARRAY裡面有POINTER(DONE)

看板C_and_CPP作者 (林佳)時間12年前 (2013/05/15 05:04), 編輯推噓1(1014)
留言15則, 4人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) CODEBLOCK 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): struct data { struct data *next ; int number= 0 ; int score = 0 ; }; 我想用這個struct 宣告成一個array 然後裡面有pointer 可以橫向的延伸 我一開始是這樣宣告 data dataA[i] ; 餵入的資料(Input): 預期的正確結果(Expected Output): 口->口 口->null 口->口->口 (以上是表示array 又能pointer 沒有限定資料) 錯誤結果(Wrong Output): 其中當我新增一筆資料的時候 EX我想把他加入index為3那裏 dataA[index].next=dataA[index] ; 這行就錯誤了 程式碼(Code):(請善用置底文網頁, 記得排版) http://ideone.com/dO9o4d 是第94行的位置 如果要宣告的話 是否使用*data[i] ? 還是另有方法 ? 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.37.49.148

05/15 05:09, , 1F
dataA[index].next = &dataA[index];
05/15 05:09, 1F

05/15 10:39, , 2F
請問一下是為什麼 或是翻書會有嗎
05/15 10:39, 2F

05/15 10:58, , 3F
找找看「取址」吧? 就是加的那個 "&"
05/15 10:58, 3F

05/15 12:34, , 4F
你的next是pointer,所以你要給他位址,要得到位址就
05/15 12:34, 4F

05/15 12:34, , 5F
需要用&取得
05/15 12:34, 5F

05/15 12:34, , 6F
你可以再去參考指標章節
05/15 12:34, 6F

05/15 13:18, , 7F
我每新增一個資料 如果index 有衝突的話 我就把變成
05/15 13:18, 7F

05/15 13:19, , 8F
新資料->舊資料
05/15 13:19, 8F

05/15 13:19, , 9F
但是如果用&的話 我的temp(佔存)的東西內容替換成新值
05/15 13:19, 9F

05/15 13:20, , 10F
但位址不變 下次使用的時候 就會出錯 請問有別的宣告方式可
05/15 13:20, 10F

05/15 13:20, , 11F
解嗎
05/15 13:20, 11F

05/15 13:22, , 12F
是我的中文不太好嗎?我看不太懂你的意思...
05/15 13:22, 12F

05/15 13:23, , 13F
你的問題就是 LinkList 這去查就很多範例了
05/15 13:23, 13F
假如我現在都是index = 1 我新增第二筆資料在index 1 裡面 會變成 新(2)->舊 (1) 但我在新增一筆資料在index 1 會變成 最新(3)-> (2) 然後最舊的那筆不見了 ※ 編輯: redbxh 來自: 114.37.49.148 (05/15 13:28)

05/15 13:30, , 14F
你說"新增" 可是我沒在code裡面看到 new ?
05/15 13:30, 14F

05/15 13:30, , 15F
哦 我大概知道我問題在哪了
05/15 13:30, 15F
以解決 我後來修改了我的新增方式 新增之前 new 一個同struct 的pointer 然後再下去做新增 這是我在前一個學期就很常用的東西 竟然還要拿上來問大家 對不起 ※ 編輯: redbxh 來自: 114.37.49.148 (05/15 13:48)
文章代碼(AID): #1HagRmKA (C_and_CPP)