PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
C_and_CPP
[問題] 指標問題
作者:
Arim
(象山下智久)
2021-03-15 20:41:10
最近碰上的面試問題
char s[] = "1234567";
char *p = s;
printf("%c", *(p++));
印出來是 1
但我預期應該是 2,先移動到下一個位置(++),然後取值
請問原因是?
作者:
ddavid
(謊言接線生)
2021-03-15 20:50:00
你講的是++p
作者:
Arim
(象山下智久)
2021-03-15 20:59:00
括號不是要先算嗎?
作者:
cuteSquirrel
(松鼠)
2021-03-15 21:55:00
p++代表先做事再累加。
作者:
pinefruit
(莫使惹塵埃)
2021-03-15 22:29:00
其實這邊不管有沒有括號,p++ 都會先算。但 p++ 的運算流程是: 1. 建立一份 p 的副本2. 遞增 p 的值 3. 回傳步驟 1 的副本所以 *(p++) 反參考到的其實是 p 在遞增前的副本。
作者:
cuteSquirrel
(松鼠)
2021-03-15 22:54:00
正解
作者:
wei115
(ㄎㄎ)
2021-03-16 08:29:00
先對p求值,再遞增p
作者:
alan23273850
2021-03-16 17:53:00
跟括號沒關係,p++ 就是取完再加的意思,所以加完的結果一定不會在這一句話呈現出來
作者:
newking761
(J三小)
2021-03-20 13:49:00
先給再加阿。。。。。這個不是最基礎的嗎?這都不會,面試官484哭出來
作者: pl168959903
2021-03-22 23:30:00
你這樣面試很危險啊。。。。
繼續閱讀
Re: [問題] 請問語法問題
descent
[問題] 請問語法問題
pilipalabon
[分享] BBS 程式碼上色器
pinefruit
[問題] 請教link lib跟dynamic load dll的差異
Keitaro
[問題] 資料結構開放式課程的課本
baltimore
[問題] QMovie 不吃 QZipReader 的fileData
liu2007
[問題] 利用pointer取substring
ericerix
[問題] 看不懂module.h的macro
pmove
[問題] C++ function input arg問題
Dalapa
[問題] GDB 使用start命令的中斷點?
Matz
Links
booklink
Contact Us: admin [ a t ] ucptt.com