Comportamiento de Sizeof en C

He aprendido que cuando pasamos el nombre de la matriz a sizeof, el nombre de la matriz no decae al puntero a la dirección base. El siguiente código verifica este hecho al dar la respuesta 10.

#include <stdio.h> 

int main(){  
    int arr[10];  
    printf("Size of array is %d" , sizeof(arr)/sizeof(int));  
    return 0;  
}

Sin embargo, cuando ejecuto el siguiente código, la respuesta es 1. Independientemente de si una dimensión está escrita en prototipo o no, la respuesta es 1. ¿Por qué es así?

#include <stdio.h>

void dimension(int arr[]){  
    printf("Sizof array is %d" , sizeof(arr)/sizeof(int));  
}


int main(){  
    int arr[10];  
    dimension(arr);  
    return 0;  
}  

Respuestas a la pregunta(8)

Su respuesta a la pregunta