Я узнал, что когда мы передаем имя массива в 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;
}