C String打印垃圾字符

kar*_*k A 2 c

#include <stdio.h>
#include <stdlib.h>
int main()
{
    char a[]="shevchenko ac milan";
printf("%s",&a);
}
Run Code Online (Sandbox Code Playgroud)

这是打印"shevchenko ac milan"

but 
#include <stdio.h>
#include <stdlib.h>
int main()
{
    char a[]="shevchenko ac milan";
printf("%s",&a+1);
}
Run Code Online (Sandbox Code Playgroud)

为什么这会打印垃圾字符?

peo*_*oro 10

&a指向achar[20]的类型指针.

当你这样做时,&a+1你将转到char[20]内存中的下一个项目,因此你会去追求a.

你应该有一个char*:通过对它进行求和,你将进入下一个char.

要获得一个char*你可以使用a(它char*通过这样做衰败),从而a+1去下一个char.