Вообщем , задумался о мысли .
Вот к примеру я создаю массив :
int a[3] = {1, 2, 3};
Выведу : a
Выведу : &a
и : &a[0]
одинаково . хм..
ведь по сути переменная "a" содержит адрес нулевого элемента массива , правильно ?
значит в памяти создалась эта переменная "a" точнее указатель , и в нем адрес нулевого элемента массива .
но тогда при выводе :
&a и &a[0] должны быть выведены разные адреса . так что же получается .
компилятор скрывает от нас эту переменную?
так что же получается .
компилятор скрывает от нас эту переменную?
Любая переменная располагается где-то в памяти, а значит сама по себе имеет адрес расположения. Для хранения адреса, по которому хранится переменная a не нужно другой переменной.
ведь по сути переменная "a" содержит адрес нулевого элемента массива , правильно ?
Нет. Как вы верно подметили, имя массива, его адрес и адрес первого элемента - это одно и тоже. Никакой дополнительной скрытой переменной нет, т.к. вы выделяете массив в автоматической памяти (на стеке).
там в одном случае просто указатель на нулевой элемент.
а в другом случае ссылка на указатель на нулевой элемент(ссылка на указатель это по сути то же самое, что указатель на указатель).
если бы массив был динамический, это бы имело значение в смысле выделения памяти.