[問題] 動態陣列傳值

看板C_and_CPP (C/C++)作者 (PUPUPUPUPUPU)時間13年前 (2012/12/14 02:51), 編輯推噓2(205)
留言7則, 3人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC 2010 #Express 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 動態陣列傳值的問題 餵入的資料(Input): 假設現在有兩個二維動態陣列 int num = 5; int **a = new int *[num]; int **b = new int *[num]; for(int i =0; i<num; i++) { for(int j =0; j<num; j++) { a[i][j] = 10; b[i][j] = 7; } } 則此時 a: 10 10 10 10 10...(皆是10) b: 7 7 7 7 7... (皆是7) 但是如果現在假設 b = a; b[2][2] = 3; 則 a[2][2] 的值也會變成3 是因為我的動帶陣列傳遞的是址不是值的關係嗎? 預期的正確結果(Expected Output): a[2][2] = 10 錯誤結果(Wrong Output): a[2][2] = 3 程式碼(Code):(請善用置底文網頁, 記得排版) 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.73.128

12/14 03:05, , 1F
b=a; <-你已經把A的地址寫到b的,那改b=改a
12/14 03:05, 1F

12/14 03:06, , 2F
你修改a[2][2]那b[2][2]也不會是7
12/14 03:06, 2F
那如果我現在想把a的值丟到b裡面,但是改b的時候不會改到a值該怎麼改呢? ※ 編輯: pulajin 來自: 140.115.73.128 (12/14 03:10)

12/14 03:16, , 3F
可是你已經把指標洗到a去了,指標b你沒有保留
12/14 03:16, 3F

12/14 03:17, , 4F
你得保留b指標才有可能保留b陣列存在
12/14 03:17, 4F

12/14 03:18, , 5F
你得多做一個白手套
12/14 03:18, 5F

12/14 06:10, , 6F
int **a = new int [num]; 這樣會過?
12/14 06:10, 6F
抱歉少打一個* XD ※ 編輯: pulajin 來自: 114.34.30.120 (12/14 10:40)

12/14 11:31, , 7F
一個一個複製過去囉
12/14 11:31, 7F
文章代碼(AID): #1GoYEdQs (C_and_CPP)
文章代碼(AID): #1GoYEdQs (C_and_CPP)