[問題] 如何賦予陣列新的位址?

看板C_and_CPP (C/C++)作者 (忍者好難養)時間12年前 (2012/11/21 10:52), 編輯推噓1(1012)
留言13則, 3人參與, 最新討論串1/1
我宣告了一個指標陣列 char *array[10]; 接下來想要用while讓user輸入10個字串,分別存到array int i=0; while(i<10) { char string[20]; scanf("%s",string); array[i]=string; i++ } 但是我發現string這個陣列的位址不會變 所以內容一直被覆蓋過去,請問應該如何才能給string這陣列新的位置呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.129.50.200 ※ 編輯: asadman1523 來自: 140.129.50.200 (11/21 10:53)

11/21 10:56, , 1F
當然不會變了,羅馬為什麼會搬家到東京?
11/21 10:56, 1F
我以為char放在while裡面會重新宣告string的位址... ※ 編輯: asadman1523 來自: 140.129.50.200 (11/21 10:58)

11/21 11:03, , 2F
http://ideone.com/oZO2Hc 以整數的例子來說, 雖然你
11/21 11:03, 2F

11/21 11:04, , 3F
讀進來的數值會放在變數 a 所佔的記憶體上, 但是為了
11/21 11:04, 3F

11/21 11:04, , 4F
存進陣列, 還是會把記憶體中的數值"複製"一份儲存在已
11/21 11:04, 4F

11/21 11:06, , 5F
經配置好的空間中, 現在你的 case 倒比較像這樣
11/21 11:06, 5F

11/21 11:07, , 6F
http://ideone.com/g807Aq 把 string 一整塊空間當作
11/21 11:07, 6F

11/21 11:08, , 7F
變數, 那麼你要儲存這個變數在別的地方也要有足夠大的
11/21 11:08, 7F

11/21 11:09, , 8F
空間才行, 用二維的 char 陣列或是 malloc 動態配製吧
11/21 11:09, 8F

11/21 11:10, , 9F
記住丟進 scanf 的是變數的位址, 所以當你用 "%s"來讀
11/21 11:10, 9F

11/21 11:11, , 10F
的時候, scanf 預期得到的是 char變數的位址而不是
11/21 11:11, 10F

11/21 11:12, , 11F
char*變數的值; char* 用來指向一連串的 char變數, 並
11/21 11:12, 11F

11/21 11:13, , 12F
不表示 char*=字串變數
11/21 11:13, 12F

11/21 20:51, , 13F
你以為你在寫python嗎XD
11/21 20:51, 13F
文章代碼(AID): #1Gh47jpf (C_and_CPP)
文章代碼(AID): #1Gh47jpf (C_and_CPP)