为什么 arr[][3] 的大小是 36

why the sizeof arr[][3] is 36

int arr[][3] = {10, 20, 30, 40, 50, 60, 70};
    printf("%d\n", sizeof(arr));

抱歉我是第一次来,这是我的第一个问题,我无法解决请原谅我的语法 为什么我的编译器的输出是 36?当它只有 7 个元素时,7 * 4 = 28,在此先感谢您的帮助

您声明了一个三元组数组,它​​包含三个这样的元组:

{10, 20, 30},
{40, 50, 60},
{70,  _,  _},  // _ is unspecified and will be 0

总共是 9 个整数,9*sizeof(int) == 36

如果你声明一个 int[] 而不是 int[][3],它确实有 7 个整数和 28 个 sizeof。