c - sizeof() 数组在 C 中的函数原型中以显式长度定义
问题描述
我今天偶然发现了一个奇怪的 C 语言,我无法理解其背后的原因。
如果我有这样的功能(假设 32 位架构):
void printSize(char array[6]) {
printf("%zd\n", sizeof array);
}
我将返回 4,这是指针的大小。我期待得到 6,这是函数原型中明确声明的大小。
我知道数组是通过引用传递的,并且基础类型是指针。我假设将数组的长度放入原型中将为编译器提供返回 6 所需的信息。
为什么C会这样做?另外,如果编译器甚至不能执行 sizeof() 并返回那个大小,那么在原型中放置一个大小有什么意义呢?