C语言sizeof()使用的问题

2024-12-02 14:01:54
推荐回答(4个)
回答1:

在Fn函数里,形参float b[]其实与float *b是等效的。
也就是说,在这里b实际上是一个指针,而在32位机器上,指针的大小是32位的,也就是4个字节。

而在主函数里,temp是一个数组,具有10个float元素,所以大小是40个字节。

回答2:

因为在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));
}

回答3:

肯定不一样哦,sizeof是静态不是动态计算,你在运行前这个值就有了,另外数组作为函数的参数,跟指针类似。

回答4:

int型变量在内存中占4个字节,double型变量在内存中占8个字节
sizeof是获取参数的大小,所以答案是4和8