Я узнал, что когда мы передаем имя массива в sizeof, имя массива не затухает до указателя на базовый адрес. Приведенный ниже код подтверждает этот факт, давая ответ 10.
#include <stdio.h>
int main(){
int arr[10];
printf("Size of array is %d" , sizeof(arr)/sizeof(int));
return 0;
}
Однако, когда я запускаю приведенный ниже код, ответ приходит 1. Независимо от того, записано ли измерение в прототипе или нет, ответ равен 1. Почему это так?
#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;
}