我有一个关于 C sizeof() 函数的快速问题。我将一个数组传递给一个函数,在该函数内部,我想检查数组的大小。但是,无论输入数组的大小如何,在函数内部,它的大小似乎总是为 4。例如:
void checkArraySize(char data[])
{
int internalSize = sizeof(data); //internalSize is reported as 4
}
void main(void)
{
char data[] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08};
int externalSize = sizeof(data); //externalSize is reported as 8
checkArraySize(data);
}
正如代码中的注释所示,在调用 checkArraySize() 之类的函数之前,我检查了数组的大小,结果显示为 8。但是,当我检查函数内部数组的大小时,它只报告有4 个元素(无论输入数组的大小如何,它都会报告 4 个元素)。
很多时候,当我看到这样的问题时,是因为我对这个话题的理解存在差距。所以,我确定我只是错过了传递数组的工作原理。如果没有,关于为什么会发生这种情况的任何想法?
注意:这是在 PIC32 上,所以我使用的是 Microchip 的 MPLAB X IDE 和 XC32 编译器。