看板 C_and_CPP 關於我們 聯絡資訊
請問為什麼變數的地址在mian不能對他做加減運算 可是丟到函式就可以做加減法運算? 例如 char b[10]="asdf"; b=b+1; //在函數可以做 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.44.29.253 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1416753455.A.FBC.html ※ 編輯: anoymouse (114.44.29.253), 11/23/2014 22:40:47
bibo9901: 因為 array 不是 pointer, 而且是 not modifiable 11/23 22:47
bibo9901: 但是變成指標傳到函數之後, 那就是指標而不是陣列了 11/23 22:48
flydragon198: 通常會叫address為位址 11/23 23:09
anoymouse: 瞭解 謝謝 11/23 23:21
LPH66: 事實上你有一個問題搞錯了: 陣列變數不能做的是對其賦值 11/24 01:26
LPH66: 也就是這裡出問題的是 = 這個動作 11/24 01:27
LPH66: 而這裡 + 這個動作編譯器會先幫你把陣列變數變成指標再做 11/24 01:27
LPH66: 幾乎所有陣列變數能做的運算都會先這樣 decay 後才進行的 11/24 01:28
LPH66: 所以你其實可以 char *p; p = b+1; 這樣是合法的 11/24 01:29
LPH66: p 在這之後會指向你的字串中 's' 這個 char 的所在位置 11/24 01:29
anoymouse: 恩 我本是想改變指標變數b的位址 11/25 02:29
LPH66: b 本來就不是指標變數而是陣列變數, 所以你想要那樣的話 11/25 04:14
LPH66: 就另外宣告一個指標變數來指就好 11/25 04:14