sizeof使用时除了sizeof(a)/sizeof(a[0])还有在自定义输入数组时不可避免的问题

爷在做作业的时候卡住了
越想越不对劲

    char p[20];
    scanf("%s",&p);
    int lenth=sizeof(p)/sizeof(char);
    //一个问题是如果我定义了数组p的元素数量是20
    //那么sizeof出来的结果直接就是20
    //但是strlen函数就不一样
    cout<<lenth<<endl;
    int changdu=strlen(p);
    cout<<changdu<<endl; 
    //结果很正确 

运行结果及报错内容

自己看吧,可能会有人有同样的问题

img

我服了


对啊,sizeof计算的长度是p这块内存的长度