首页 > 解决方案 > sizeof() 数组在 C 中的函数原型中以显式长度定义

问题描述

我今天偶然发现了一个奇怪的 C 语言,我无法理解其背后的原因。

如果我有这样的功能(假设 32 位架构):

void printSize(char array[6]) {
    printf("%zd\n", sizeof array);
}

我将返回 4,这是指针的大小。我期待得到 6,这是函数原型中明确声明的大小。

我知道数组是通过引用传递的,并且基础类型是指针。我假设将数组的长度放入原型中将为编译器提供返回 6 所需的信息。

为什么C会这样做?另外,如果编译器甚至不能执行 sizeof() 并返回那个大小,那么在原型中放置一个大小有什么意义呢?

标签: csizeoffunction-prototypes

解决方案



推荐阅读