¿Qué devuelve sizeof (& array)?

Siguiendo la pregunta:¿Por qué la dirección de una matriz es igual a su valor en C?

#include <stdio.h>
#define N 10    
char str2[N]={"Hello"};
int main(){
    printf("sizeof(str2): %d bytes\n", sizeof(str2));
    printf("sizeof(&str2): %d bytes\n", sizeof(&str2));
    return 0;
}

Salida:

sizeof(str2): 10 bytes
sizeof(&str2): 4 bytes

Yo sé esostr2 solo es la dirección del primer elemento en la matrizstr2. Y que cuandostr2 es un argumento desizeof devuelve el tamaño de toda la matriz str2.

Adicionalmente,&str2 También es la dirección del primer elemento en arr.str2 pero de diferente tipo (char (*)[N] == puntero a la matriz). Pero como hace&str2 comportarse cuando es un argumento desizeof?

Respuestas a la pregunta(3)

Su respuesta a la pregunta