我之前读过一个由于与此完全相同而关闭的问题
和
但是在阅读完这篇文章后,我仍然对 sizeof() 的工作原理感到困惑。我知道将数组作为参数传递给函数,例如
void foo(int a[5])
将导致数组参数衰减为指针。我在上面的 2 个问题链接中没有找到一个明确的答案,即为什么sizeof()
函数本身不受(或至少看似不受)这种指针衰减行为的影响。如果 sizeof() 的行为与任何其他函数一样,那么
int a[5] = {1,2,3,4,5};
cout << sizeof(a) << endl;
那么上面应该输出4
而不是20
. 我是否错过了一些明显的东西,因为这似乎与指针行为的衰减相矛盾???很抱歉再次提出这个问题,但我真的很难理解为什么会发生这种情况,尽管多年来一直愉快地使用该功能而没有真正考虑过它。