我执行了以下代码。
#include <stdio.h>
int main()
{char *a="awake";
printf("%s\n", *(a+1));
return 0; // expected out_put to be wake
}
答案 0 :(得分:5)
您正在取消引用指针,这使得它成为char
但尝试输出字符串。将您的打印语句更改为printf("%s\n", a+1);
答案 1 :(得分:1)
*(a+1)
与a[1]
的{{1}}相同,而不是char
char *
所期望的printf
。
编辑:澄清:%s
需要printf
说明符的地址,%s
就是这样一个地址(即第二个字符的地址)字符串),但a+1
然后在该地址给出值。这只是一个角色而且很可能不是*(a+1)
阅读的有效记忆位置。
答案 2 :(得分:0)
您不希望对char *
:
printf("%s\n", (a+1));
做你想做的事。