为什么a2的储存单元比a1的大?

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

img

表面上看,都是三个字符,但是a2有一个隐藏的结束符还多占用以恶空间,因此a2的大,该字符是结束符'\0'

在c语言中其实并没有字符串这个数据类型,本质上是使用字符数组来表示字符串的,并且在编译的时候会在末尾增加一个结束字符\0,所以会大一点。

可以运行下面的示例试一下

#include <stdio.h>
#include <string.h>
int main(void)
{
    /*字符数组赋初值*/
    char cArr[] = {'p','r','o'};
    /*字符串赋初值*/
    char sArr[] = "pro";
    /*用sizeof()求长度*/
    printf("cArr的长度=%d\n", sizeof(cArr));
    printf("sArr的长度=%d\n", sizeof(sArr));
    return 0;
}