#include <stdio.h>
int main(void)
{
char c[] = "Gate2011";
char *p = c;
printf("%s", p+p[3]-p[1]);
return 0;
}
输出: 2011
为什么要提供此输出?我尝试了不同的组合,它总是给垃圾。
答案 0 :(得分:3)
因为p[3] = 'e' = 101
和
p[1] = 'a' = 97
101 - 97 = 4
p + 4
=&#34; 2001&#34;的地址in&#34; Gate2001&#34;
解释为字符串......你去。
我也不理解downvotes :(
答案 1 :(得分:0)
P + P [3] -P [1]
for p是字符串&#34; Gate2011&#34;的Ram地址。 ;对于P [3] - p [1]实际上会实现对字符串的访问偏移,即&#39; e&#39; - &#39; a&#39; = 4
你可以算一下它现在的位置。