在Fn函数里,形参float b[]其实与float *b是等效的。
也就是说,在这里b实际上是一个指针,而在32位机器上,指针的大小是32位的,也就是4个字节。
而在主函数里,temp是一个数组,具有10个float元素,所以大小是40个字节。
因为在Fn里面数组退化成指针了,所以sizeof(b)返回的是一个指针的大小
如果你想在Fn里面获得和main里面同样的效果,
则需要告诉Fn参数的大小,不过这样就限定了数组参数的大小了
参见
#include
void Fn(float (&b)[10])
{
printf("%d", sizeof(b));
printf("\n");
}
int main()
{
float temp[10] = { 0.0 };
Fn(temp);
printf("%d", sizeof(temp));
}
肯定不一样哦,sizeof是静态不是动态计算,你在运行前这个值就有了,另外数组作为函数的参数,跟指针类似。
int型变量在内存中占4个字节,double型变量在内存中占8个字节
sizeof是获取参数的大小,所以答案是4和8