用strcat连接后数组的大小问题


#include<stdio.h>
#include<string.h>
int main(void)
{
    char s1[]="bbbbbbb";
    char s2[]="aaa";
    strcat(s2,s1);
    printf("s1=%s\n",s1);
    printf("s2=%s\n",s2);
    printf("sizeof(s1)=%d,strlen(s1)=%d\n",sizeof(s1),strlen(s1));
    printf("sizeof(s2)=%d,strlen(s2)=%d\n",sizeof(s2),strlen(s2));
    return 0;
}

img


为啥sizeof(s2)是4啊?
我感觉应该是11

S2数组就定义了4个字节。strcat都是溢出了
假设你写成char s2[100] = "aaa";
那sizeof(s2)就是100了

因为s2在初始化的时候被初始为4,后面连接不会改变数组的长度
和你写char s2[4]="aaa"效果是一样的