Re: [問題] 字串減字串?

看板C_and_CPP作者 (史考特)時間8年前 (2016/05/25 09:19), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《art1 (人,原來不是人)》之銘言: : ※ 引述《loveflames (咕啾咕啾魔法陣)》之銘言: : : char * state="zsxdcvg"; : : ... : : playAudio(&audio[strchr(state,s1[i])-state]); : strchr(state,s1[i])-state 的結果是個數字 : 可是實在無法理解為什麼字串可以這樣直接相減 : google 「字串相減」或是「字串 減 字串」 都找不到想要的說明 : 還是說這種技巧硬記就好?不需要去理解? 首先指標宣告 char *a; char b[]="1234"; 在記憶體中 0x100 0x101 0x102 0x103 1 2 3 4 a = b; 則 a = 0x100 , 這個變數的值為 0x100 當要存取記憶體上的資料時 *a = '1', *(a+1) = '2' ... etc ^ |-- 這是索引, 不是記憶體 假設 state 在 0x100 位址 char *state="zsxdcvg"; char *tmp; tmp = strchr(state, 'd') tmp 會等於 0x103 tmp - state = 0x103 - 0x100 = 3 通常是用來找到一個 buffer 中的 index 所以 state[tmp-state] = 'd' 如果應要變成字串, 通常 state[tmp-state] = 0 這樣 state 就變成 "zsx", 但前提之下 state 要宣告成 array 不能用指標 e.g. char state[] = "zsxdcvg"; -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.130.164.120 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1464139144.A.0C3.html
文章代碼(AID): #1NHFs833 (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1NHFs833 (C_and_CPP)