看板 C_and_CPP 關於我們 聯絡資訊
我想請問一下 下列程式 #include<stdio.h> main() { char str[]="applepine"; char *p=str; p++; printf("%c\n",p); p++; printf("%c\n",p); p++; printf("%s\n",p); return 0; } 結果分別為 a、b、lepine 我想請問前兩個結果要怎麼解釋才合理 謝謝 --
kolling:我有看到樓下在幹來福08/25 23:43
tn910127:我天生神力阿08/25 23:43
winston01:樓上你.....08/25 23:44
asiasssh:XDDDDDD08/25 23:44
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.47.76.95
cooper6334:那來的b 07/25 00:36
newdominic:你會解釋第三個結果的話 那前兩個應該也很容易才對... 07/25 00:38
cooper6334:%c後面是直接吃char,天曉得你p是多少才會印出a跟b 07/25 00:42
cooper6334:%s後面帶指標,所以p指到&str[3],就會印出lepine 07/25 00:43
cooper6334:假如要印出前面兩個p的話就 printf("%c\n",*p); 07/25 00:43
jack58:是會出現b沒錯啊 一樓 07/25 00:53
elvis3010:%c後面要接*p才是char 07/25 00:56
cooper6334:就是因為你給%c的是p而不是*p才會冒出ab,關掉重開之後 07/25 00:56
cooper6334:搞不好就變1跟2了 07/25 00:56
jack58:痾....樓上 並不會變1跟2 07/25 01:00
jack58:我知道應該接*p才會是給%c的 但是我寫題目確實問這樣 07/25 01:01
cooper6334:我只是打個比方= =,因為你p是指標,存的是記憶體位置 07/25 01:01
jack58:而且答案是a、b 電腦跑出來也是這樣 07/25 01:02
cooper6334:題目誰出的...... 07/25 01:02
jack58:所以我想上來問這結果應該怎麼解釋 因為第三個結果我知 07/25 01:04
cooper6334:我用dev印出1跟2,用visual 2008印出}跟~ 07/25 01:06
jack58:我是用codeblock 07/25 01:08
loveflames:把str的位址印出來看看 07/25 01:20
joefaq:p的低位元剛好等於ANSI的a 07/25 01:44