为什么以这种方式拆分这个词会崩溃?

时间:2013-10-11 13:11:11

标签: c

我执行了以下代码。

#include <stdio.h>

int main()
{char *a="awake";
 printf("%s\n", *(a+1));
 return 0; // expected out_put to be wake
} 

3 个答案:

答案 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));

做你想做的事。