Это два из множества возможных способов объявления массивов (и выделения для них памяти) в c ++
1. int a[3];
2. int *b = new int[3];
Я хочу понять, как c ++ по-разному трактует эти два.
a. В обоих случаях я могу получить доступ к массиву со следующим синтаксисом: a [1]
и b [1]
b.Когда я пробую cout << a
и cout << b
, оба печатают адреса первого элемента соответствующих массивов.
Мне кажется, что и a, и b являются рассматриваются как указатели на первые элементы массивов.
c. Но, как ни странно, когда я пытаюсь выполнить cout << sizeof (a)
и sizeof (b)
, они печатают разные значения - 4 и 12. соответственно.
Я не понимаю. почему в случае sizeof (b)
печатается размер всего массива.