простой вопрос, который содержит ошибки меня.
Допустим, у меня есть массив, определенный в main, например, так 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
. Есть идеи, почему?
Заранее спасибо!