0

我执行了以下代码。

#include <stdio.h>

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

3 回答 3

5

您正在取消引用指针,这使它成为char但试图输出字符串。将您的打印声明更改为printf("%s\n", a+1);

于 2013-10-11T13:14:03.333 回答
1

*(a+1)a[1]与which is a相同,而char不是char *期望printf的 the %s

编辑:澄清:printf需要说明%s符的地址,a+1就是这样一个地址(即字符串中第二个字符的地址),*(a+1)然后给出该地址的。这只是一个字符,很可能不是可供printf读取的有效内存位置。

于 2013-10-11T13:15:05.463 回答
0

您不想为以下内容辩护char *

printf("%s\n", (a+1));

做你想做的事。

于 2013-10-11T13:16:13.357 回答