[問題] gets()跟scanf()

看板C_and_CPP (C/C++)作者 (Fan)時間13年前 (2012/09/28 16:05), 編輯推噓4(408)
留言12則, 4人參與, 最新討論串1/1
請問為何下面這段程式 http://codepad.org/wU1xGkjA 第22行 gets((ptr+i)->name); 第24行 scanf("%d",&(ptr+i)->score); scanf函數後面有加取址運算元,而gets卻不加呢? -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 134.208.1.29

09/28 16:16, , 1F
因為name的type是char 而score的type是int
09/28 16:16, 1F

09/28 16:17, , 2F
的array
09/28 16:17, 2F

09/28 16:22, , 3F
所以是因為型態才加取址的嗎? 感覺怪怪的耶
09/28 16:22, 3F

09/28 16:52, , 4F
你要知道字串其實是字元陣列 所以所有要給一個字串的地方
09/28 16:52, 4F

09/28 16:53, , 5F
http://0rz.tw/waHUq 看一下 scanf() 的使用方式吧
09/28 16:53, 5F

09/28 16:53, , 6F
都是給陣列 相對的其他東西就得要告訴函數這個變數要寫去哪
09/28 16:53, 6F

09/28 16:53, , 7F
因此才會有「除了字串之外都要加 &」這個記法
09/28 16:53, 7F

09/28 16:55, , 8F
非常感謝LPH,我懂了
09/28 16:55, 8F

09/28 16:57, , 9F
可是為何24行的取址不是該寫成&((ptr+i)->score)才對嗎
09/28 16:57, 9F

09/28 16:59, , 10F
有加括號比較易懂,沒使用是因為 -> 優先度比 & 高
09/28 16:59, 10F

09/28 17:00, , 11F
關鍵字 Operator Precedence
09/28 17:00, 11F

09/28 17:04, , 12F
原來如此,謝謝教導
09/28 17:04, 12F
文章代碼(AID): #1GPLemOV (C_and_CPP)
文章代碼(AID): #1GPLemOV (C_and_CPP)