Я всегда понимал, что в C, func и &func эквивалентны. Я предполагаю, что оба они должны иметь указатель типа, который составляет 8 байтов в моей системе Win64. Однако я просто попробовал это:
#include <stdio.h>
int func(int x, int y)
{
printf("hello\n");
}
int main()
{
printf("%d, %d\n", sizeof(&func), sizeof(func));
return 0;
}
И ожидая получить вывод 8, 8 был удивлен, получив вместо него 8, 1.
Почему это? Какой тип func? Кажется, это тип char или некоторый эквивалент.
Что здесь происходит?
Я скомпилировал это с помощью gcc -std=c99, если это имеет значение.