Nov 24, 2012 00:31
Ребята, объясните неучу, почему у
#define count(x) (sizeof(x) / sizeof(x[0]))
#include
#include
ulong size(arr)
int arr[];
{
return count(arr);
}
int main(int argc, char **argv)
{
int a[] = {3,5,4,6,5,1,5};
printf("%lu\n", count(a));
printf("%lu\n", size(a));
return 0;
}
такой вывод:
7
2
Leave a comment
Comments 13
в функцию передается длинный указатель ( 64-бита, 8 байт) указывающий на 32-битый инт.
т.о., в функции size происходит вычисление 8/4 = 2
отсюда и результат.
Массив в Си ничем и никак не ограничен.
Reply
а про указатель не понял - это ведь не int *arr, или не важно?
как исправить код, чтобы работало?
Reply
имя массива - это _всегда_ указатель на первый элемент.
А вот как починить - сейчас буду подумать
Reply
Reply
Leave a comment