[問題] 輸出結果

看板C_and_CPP (C/C++)作者 (願主陪著你)時間15年前 (2010/07/25 00:28), 編輯推噓4(4015)
留言19則, 6人參與, 最新討論串1/1
我想請問一下 下列程式 #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 我想請問前兩個結果要怎麼解釋才合理 謝謝 --

08/25 23:43,
我有看到樓下在幹來福
08/25 23:43

08/25 23:43,
我天生神力阿
08/25 23:43

08/25 23:44,
樓上你.....
08/25 23:44

08/25 23:44,
XDDDDDD
08/25 23:44
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.47.76.95

07/25 00:36, , 1F
那來的b
07/25 00:36, 1F

07/25 00:38, , 2F
你會解釋第三個結果的話 那前兩個應該也很容易才對...
07/25 00:38, 2F

07/25 00:42, , 3F
%c後面是直接吃char,天曉得你p是多少才會印出a跟b
07/25 00:42, 3F

07/25 00:43, , 4F
%s後面帶指標,所以p指到&str[3],就會印出lepine
07/25 00:43, 4F

07/25 00:43, , 5F
假如要印出前面兩個p的話就 printf("%c\n",*p);
07/25 00:43, 5F

07/25 00:53, , 6F
是會出現b沒錯啊 一樓
07/25 00:53, 6F

07/25 00:56, , 7F
%c後面要接*p才是char
07/25 00:56, 7F

07/25 00:56, , 8F
就是因為你給%c的是p而不是*p才會冒出ab,關掉重開之後
07/25 00:56, 8F

07/25 00:56, , 9F
搞不好就變1跟2了
07/25 00:56, 9F

07/25 01:00, , 10F
痾....樓上 並不會變1跟2
07/25 01:00, 10F

07/25 01:01, , 11F
我知道應該接*p才會是給%c的 但是我寫題目確實問這樣
07/25 01:01, 11F

07/25 01:01, , 12F
我只是打個比方= =,因為你p是指標,存的是記憶體位置
07/25 01:01, 12F

07/25 01:02, , 13F
而且答案是a、b 電腦跑出來也是這樣
07/25 01:02, 13F

07/25 01:02, , 14F
題目誰出的......
07/25 01:02, 14F

07/25 01:04, , 15F
所以我想上來問這結果應該怎麼解釋 因為第三個結果我知
07/25 01:04, 15F

07/25 01:06, , 16F
我用dev印出1跟2,用visual 2008印出}跟~
07/25 01:06, 16F

07/25 01:08, , 17F
我是用codeblock
07/25 01:08, 17F

07/25 01:20, , 18F
把str的位址印出來看看
07/25 01:20, 18F

07/25 01:44, , 19F
p的低位元剛好等於ANSI的a
07/25 01:44, 19F
文章代碼(AID): #1CInIKwS (C_and_CPP)
文章代碼(AID): #1CInIKwS (C_and_CPP)