Re: [請益] C語言指標以及陣列index問題

看板Soft_Job作者 (愛看pili)時間10年前 (2013/09/22 22:10), 編輯推噓0(005)
留言5則, 2人參與, 最新討論串2/3 (看更多)
※ 引述《kkkmode (kkk)》之銘言: : 大家好, : 小弟有一個想不通的疑問 : 我用Dev-C++編譯下列程式碼 : 一直想不透問何p[1]=lmn : char *str[]={"abcd","efg12","ijklmn","opqrstv"}; char **p=str; <- 這一行你可以把他想成p跟str指向一模一樣的位置 所以p[0] = str[0] p[1] = str[1]... 以此類推 : str[0]=*p++; : str[1]=*(p+1); : str[2]=p[1]+3; : str[3]=p[0]; : printf("%s\n",p[0]); => ijklmn p[0]和p應該是相同的位置 : printf("%s\n",p[1]); => lmn , p[1]有意義?? : printf("%s\n",p[2]); => ijklmn, p[2]有意義?? : 若把str[2]=p[1]+3;改成str[2]=p[1]+2; 結果會變成=> : ijklmn : klmn , 應該是影響str[2],為何會影響到p[1] 因為p跟str指向一樣的位置,更改str等於更改p了。 : ijklmn : 事實上p[1]和p[2]應該都沒意義吧?(還是另有別意...小弟不才) : 請問這要如何解釋呢? 如果有錯,請大家幫忙更正。謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.110.72.101 ※ 編輯: RafaelC 來自: 123.110.72.101 (09/22 22:10)

09/22 22:11, , 1F
第3行開始, p自行p=p+1了 所以第四行的p是str+1
09/22 22:11, 1F

09/22 22:13, , 2F
第三行的*(str)一樣指向a字串 第四行指*(str+1+1)即i字
09/22 22:13, 2F

09/22 22:14, , 3F
第四行時的str內容為{a i i o}
09/22 22:14, 3F

09/22 22:15, , 4F
接下來就交給原原PO自己思考了~
09/22 22:15, 4F

09/22 22:17, , 5F
感謝,我沒有考慮到str內容...
09/22 22:17, 5F
文章代碼(AID): #1IFlfA_7 (Soft_Job)
文章代碼(AID): #1IFlfA_7 (Soft_Job)