让人很听话 2023-03-08 17:54 采纳率: 90.9%
浏览 14
已结题

指针的基础地址理解问题

第一个输出是为什么哦,纯为了理解


#include<stdio.h>
int main()
{
    
    char a[] = {'a','b','\0'};
    printf("%c\n", a);//输出$
    printf("%s\n", a);//输出ab
    
    printf("%p", a);
    return 0;
}
  • 写回答

3条回答 默认 最新

  • 随风4928579 2023-03-08 18:04
    关注

    第一个输出 %c 是以字符格式输出变量 a 的第一个元素,但是变量 a 是一个字符数组,只给出了数组的第一个元素,没有给出数组名或数组下标,因此编译器并不知道要输出哪个元素,于是随机返回了一个字符。$ 并不是公认的随机字符,输出结果可能因编译器和操作系统的不同而有所差异。

    正确的输出方式应该是 printf("%c\n", a[0]);,指明要输出数组 a 的第一个元素。

    以下是修正过的代码,可以正确输出:

    #include<stdio.h>
    
    int main()
    {
        char a[] = {'a','b','\0'};
        printf("%c\n", a[0]); //输出a
        printf("%s\n", a); //输出ab
        printf("%p\n", a); //输出 a 的地址
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

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