простой вопрос, который меня устраивает.
Скажем, у меня есть массив, определенный в основном так: int arr[5]
. Теперь, если я все еще внутри main, и я установил int i = sizeof(arr)/sizeof(arr[0])
, тогда мне будет 5, но если я передам массив как параметр функции и сделаю то же вычисление в этой функции, я получаю другое число. Почему это? Сначала я думал, что это потому, что в функции arr
есть указатель, но насколько я знаю, arr
является указателем внутри main!
Кроме того, если я делаю что-то очень похожее, только я инициализирую массив динамически, я получаю странные результаты:
int *arr = (int*) malloc(sizeof(int) * 5);
int length = sizeof(*arr) / sizeof(arr[0]);
printf("%d\n",length);
Здесь вывод 1
. Любые идеи почему?
Спасибо заранее!