指针的基础地址理解问题

如果说a是字符串数组的首地址,那后面的直接打印printf("%s", a);为什么是这个字符串,为什么不是字符串的地址
没understand


#include
int main()
{
    char a[10] = "12345";
    //char* p =a;

    printf("%c\n", a[0]);//输出1
    printf("%s", a);//输出12345

    return 0;
}

而这个就是地址

#include
int main()
{
    int a[5] = { 1,2,3,4,5 };
    //char* p =a;

    printf("%d\n", a[0]);//输出1
    printf("%d", a);//就是输出的首地址

    return 0;

s输出的是字符串,d输出的是数值,你要弄明白参数。如果你要输出字符串,她只要知道首地址即可输出了,具体原理看printf函数实现源码

%d输出的是地址,%s输出的是字符串。记住就行了。