在 c 语言中 对 函数名 sizeof() 为什么是1,这个1代表的是什么?

作者&投稿:独荆 (若有异议请与网页底部的电邮联系)
这有何难?
西门大官人帮你解惑:
sizeof是计算数据类型所占的字节数的运算符,sizeof的结果等于对象或者类型所占的内存字节数。sizeof()中,()后为“空结构体”(不含数据成员)的大小不为0,而是1。试想一个“不占空间”的变量如何被取地址、两个不同的“空结构体”变量又如何得以区分呢于是,“空结构体”变量也得被存储,这样编译器也就只能为其分配一个字节的空间用于占位了。
嘿嘿~~

fun是函数名,即函数的入口地址,sizeof(fun)实际是调用 sizeof(函数指针),所有指针在内存中占用的控件都只等大的,与编译器有关。

sizeof() 是c语言的一个标准库函数,用来求某个数据类型(可以是该类型变量)在内存中分配的字节数。得到的是一个整数。
如 有 int k;
可以这样 sizeof(int)也可以这样 sizeof(k)

编译器不同结果不同,事实上很多编译器不允许对函数名取Sizeof,估计楼主是GCC编译器?1可能代表这个函数为函数体为空?反正C++空类取sizeof是1 ……

经下列语句定义后,sizeof(x),sizeof(y),sizeof(a),sizeof(b)在~

应该标准答案为1448

在C语言中,定义a[100]表示定义了一个包含 100 个元素的数组 a。下面是对于 sizeof() 运算符的解释:
sizeof(a[100]) 表示 a 数组中的第 100 个元素的字节数,由于数组元素的类型未知,因此这个值可能不同,通常为 4 或 8 字节,具体取决于编译器和本机处理器架构。
sizeof(&a) 表示 a 数组的指针的字节数,即整个数组的地址的字节数。在 64 位计算机上,通常为 8 字节,而在 32 位计算机上,通常为 4 字节。
sizeof(&a[0]) 表示 a 数组中第一个元素的指针的字节数,即数组首地址的字节数。在 64 位计算机上,通常为 8 字节,而在 32 位计算机上,通常为 4 字节。
总之,sizeof() 运算符返回的是一个类型或变量所占用的内存空间大小,单位为字节。