我执行了以下代码。
#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));
做你想做的事。