开发者社区 问答 正文

又是一个令人费解的指针。。。

char *s[] = { "Yellow", "White", "Pink", "Privot" };
char **ptr[] = { s+3, s+2, s+1, s}, ***p;
p = ptr;
p = p+2;

printf("%s\n", **p+1);  //输出结果是“hite”
printf("%s\n", *(*p+1));//输出结果现在是“Pink”

//我本以为第一个是hite,第二个是Yellow,可不知为何结果就摆在面前了。。。。。

//您的点拨将会铭记于心,谢谢!!

展开
收起
a123456678 2016-06-13 10:30:38 2061 分享 版权
1 条回答
写回答
取消 提交回答
  • 因为p = p+2 之后 p 指向s+1
    
    *p + 1 = s + 1 + 1 = s + 2 
    
    *( s + 2 ) = Pink
    2019-07-17 19:35:14
    赞同 展开评论
问答地址: