对于同样一个arr输出前后不一致

问题遇到的现象和发生背景

win10+dev-c++

问题相关代码,请勿粘贴截图
#include
int main(void)
{
    
    char arr1[]={'A','B','B'};
    char arr2[6]={'E','E','C'};    
    
    //下面的地址怎么都不一样 
    printf("arr1:%s,%d\n",arr1,arr1);    
    printf("arr1:%s,%d\n",arr1,arr1);    
    printf("arr1:%s,%p,%d\n",arr1,arr1);
    printf("arr2:%s,%p,%d\n",arr2,arr2);
    
    return 0;
}

运行结果及报错内容

arr1的地址前后不一致

img

我的解答思路和尝试过的方法

搞不定

我想要达到的结果

搞清楚为啥

有啥问题啊?
后面两行你前面有三个格式化项,但后面只有两个arr1,所以第三个输出了一个随机数而已。你后面写三个arr1就一样了啊

针对你的问题,我有以下想法
根据我们是知道的%s是字符串的输出格式,所以第一个会是一个字符串。然而呢,又因为%d是输出整形用的,但是我们没设置整形,所以编译器不能确定输出什么,就会输出一个随机数。

    printf("arr1:%s,%p,%d\n",arr1,arr1);
    printf("arr2:%s,%p,%d\n",arr2,arr2);

这个是你的代码,printf 函数中需要输出三种格式 %s、%p、%d,结果变量只有两个