1.以下代码的运行结果是什么
#include <stdio.h>
int max(int a,int b)
{
return a>b?a:b;
}
int (*func)(int a,int b);
int main(int argc,char **argv)
{
printf("sizeof(func) = %zd bytes\n",sizeof(func));
printf("sizeof(max) = %zd bytes\n",sizeof(max));
return 0;
}
1.答案
在64位系统中,结果为:
sizeof(func) = 8 bytes
sizeof(max) = 1 bytes
在32位系统中,结果为:
sizeof(func) = 4 bytes
sizeof(max) = 1 bytes
func是一个函数指针,跟其余的指针是一样的,都是在64位系统中是8个字节,32位系统中为4个字节。在所有的系统中,函数名的sizeof的结果都是1个字节。
以上,sizeof的面试相关的问题都整理完了,后续有更新会再加进来,如果把所有4篇的内容都看完了之后,应该是能覆盖所有的sizeof相关问题了