我编写了以下程序来确定静态数组的大小.当我跑它时,我得到了一个我无法解释的结果.我已经在stackexchange和google上做了一些搜索,但我读过的内容并没有给我一些提示.
#include <stdio.h>
int main()
{
  int arrSize, intSize, elemSize;
  int input[9][9];
  arrSize = sizeof(input);
  intSize = sizeof(int);
  elemSize = sizeof(input[0]);
  printf("Array: %d, Element: %d, Int: %d\n", arrSize, elemSize, intSize);
  return sizeof(input);
}
当我编译并运行该程序时,我得到以下结果(使用linux):
./a.out ; echo $?
Array: 324, Element: 36, Int: 4
68
我在http://c-faq.com/malloc/sizeof.html上看到,它sizeof是在编译时计算出来的,如果我将返回值更改为return sizeof(input[0])I get 36,4那么我得到的是如果我将其更改return sizeof(input[0][0])为预期的那样.那么为什么要sizeof(input)给予68回报,但是当存储时它会给出预期的324?