1) Заблуждение:
-
Всякий раз, когда массив объявляется на языке C, неявно создается указатель на первый элемент массива (имя массива). (не так ли?)
-
Первые две строки эта страница (хотя я не уверен в правильности информации) утверждают то же самое.
Как мы видели, когда мы объявляем массив, для ячеек массива выделяется смежный блок памяти, а ячейка указателя (соответствующего типа) также выделяется и инициализируется, чтобы указывать на первую ячейку массив.С >
-
Но когда я выводил адрес, содержащий в, этот указатель и адрес of этого указателя, они оказываются одинаковыми. Итак, я думаю, что указатель не создан в конце концов.
2) Я выбрал это из этого вопроса.
- В большинстве случаев имена массивов преобразуются в указатели.
Может ли кто-нибудь дать подробное объяснение WHEN, компилятор решает преобразовать имя массива в указатель и ПОЧЕМУ?
PS: Пожалуйста, объясните это с помощью функций. Также в этой ссылка была приведена, указав, что для функции int square(int,int)
любой из square
, &square
, *square
, **square
относится к одному и тому же указателю функции. Вы можете объяснить?
Изменить: фрагмент кода
int fruits[10];
printf("Address IN constant pointer is %p\n", fruits);
printf("Address OF constant pointer is %p\n", &fruits);
Выход:
Address IN constant pointer is 0xbff99ca8
Address OF constant pointer is 0xbff99ca8