Вы можете вычислить размер массива указателей на функции, как и любой другой массив:
- размер в байтах
sizeof(fptr)
или просто sizeof fptr
- количество элементов
sizeof(arr) / sizeof(arr[0])
.
Остерегайтесь, однако, что sizeof
оценивает (во время компиляции) значение типа size_t
, которое отличается от int
. Чтобы напечатать это, используйте:
int (*fptr[])(int) = { get_square, get_cube, get_square_root };
printf("size = %zu bytes\n", sizeof fptr);
printf("size = %zu elements\n", sizeof(fptr) / sizeof(fptr[0]));
Или, возможно, приведение к unsigned
, если ваша библиотека C не поддерживает модификаторы размера C99:
printf("size = %u bytes\n", (int)sizeof fptr);
printf("size = %u elements\n", (int)(sizeof(fptr) / sizeof(fptr[0])));