我执行了以下代码。
#include <stdio.h>
int main()
{char *a="awake";
printf("%s\n", *(a+1));
return 0; // expected out_put to be wake
}
我执行了以下代码。
#include <stdio.h>
int main()
{char *a="awake";
printf("%s\n", *(a+1));
return 0; // expected out_put to be wake
}
您正在取消引用指针,这使它成为char
但试图输出字符串。将您的打印声明更改为printf("%s\n", a+1);
*(a+1)
a[1]
与which is a相同,而char
不是char *
期望printf
的 the %s
。
编辑:澄清:printf
需要说明%s
符的地址,a+1
就是这样一个地址(即字符串中第二个字符的地址),*(a+1)
然后给出该地址的值。这只是一个字符,很可能不是可供printf
读取的有效内存位置。
您不想为以下内容辩护char *
:
printf("%s\n", (a+1));
做你想做的事。