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