почему размер arr [] [3] равен 36 - PullRequest
0 голосов
/ 27 февраля 2020
int arr[][3] = {10, 20, 30, 40, 50, 60, 70};
    printf("%d\n", sizeof(arr));

извините, это мой первый раз здесь, это моя первая проблема, которую я не могу решить, пожалуйста, простите мою грамматику, почему вывод этого в моем компиляторе равен 36? когда в нем всего 7 элементов, а 7 * 4 = 28, заранее спасибо за помощь

1 Ответ

1 голос
/ 27 февраля 2020

Вы объявили массив из 3-х кортежей, и он содержит три таких кортежа:

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

В общей сложности это 9 дюймов и 9*sizeof(int) == 36

Если вы объявили int[] вместо int[][3], он действительно будет иметь 7 дюймов и размер 28.

...