¿El operador sizeof devuelve valores diferentes para c & c ++?

Una matriz de caracteres se define globalmente y una estructura con el mismo nombre se define dentro de una función. ¿Por qué sizeof operator devuelve valores diferentes para c & c ++?

char S[13];
void fun()
{
    struct S
    {
        int v;
    };
    int v1 = sizeof(S);
}

// devuelve 4 en C ++ y 13 en C

Respuestas a la pregunta(2)

Su respuesta a la pregunta