Я всегда понимал, что в 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
, если это имеет значение.