假设有以下代码:
#include <stdio.h>
int a(){
int b = 5;
return b;
}
int main ()
{
printf("%d\n", sizeof(a));
return 0;
}
以上打印结果为1
。这是什么意思?
我知道当在结构体上使用sizeof
时,它会以字节为单位获取其中数据类型的总大小。但是当它用于函数时,这意味着什么?
编辑:
如果我使用 sizeof(a())
而不是 sizeof(a)
,现在它输出4
,这是返回类型的大小,这种做法正确吗?这不是未定义的吗?
sizeof(a()))
而不是sizeof(a))
会怎样呢?现在它打印出了返回类型的大小4
,这是正确的吗?为什么它不是未定义的? - user13366635sizeof(a()))
是有效的,因为a()
的类型是int
,这是函数的返回类型。 "这是正确的方式吗?" 做什么? - dbush%d
打印size_t
也会引发未定义行为。必须使用%p
。 - phuclv%p
是指针。%zu
是size_t
。 - dbush%zu
而不是%p
。 - phuclv