sizeof
输出错误?void pointer
是什么意思?为什么是4个字节?在此代码中:
struct s1
{
int p;
void *q;
char r;
};
struct s2
{
int p;
char r;
void *q;
};
int main()
{
struct s1 s;
struct s2 r;
printf("%d %d",sizeof(s),sizeof(r));
printf("\n");
printf("%d %d %d",sizeof(int),sizeof(char),sizeof(void*));
return 0;
}
我的输出为12,但我认为sizeof
应该给出9作为答案。
我在很多帖子中听到的这个填充是什么?
答案 0 :(得分:2)
它没有给出错误的输出。你系统中int的大小是4,void指针的大小也是4,而char通常可以是8位长,struct本身不会是9个字节长,因为大多数系统至少是32位,所以编译器是"填充"它们是4个字节的倍数。 void指针只是一个指向任何东西的指针。