разница между двумя методами объявления массивов c ++

Это два из множества возможных способов объявления массивов (и выделения для них памяти) в 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) печатается размер всего массива.

5
задан K Mehta 5 March 2012 в 09:23
поделиться