让人很听话 2023-03-08 16:26 采纳率: 90.9%
浏览 27
已结题

指针的基础地址理解问题

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


#include<stdio.h>
int main()
{
    char a[10] = "12345";
    //char* p =a;

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

    return 0;
}

而这个就是地址

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

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

    return 0;

  • 写回答

3条回答 默认 最新

  • 扑天鹰 2023-03-08 16:29
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月16日
  • 已采纳回答 3月8日
  • 创建了问题 3月8日