Почему я не могу рассматривать массив как указатель в C?
Я вижу этот вопрос много на SO. Может быть, не так много слов ... но снова и снова возникает путаница, как массивы отличаются от указателей. Поэтому я подумал, что уделю минутку Q & A нескольким пунктам по этому поводу.
Для целей этого Q & A мы предполагаем, что используется 32-битная система, и было объявлено следующее:
char * ptr = "hello";
char arr[10] = "hello";
int iarr[10] = {0};
Вот список вопросов, которые предполагают путаницу, которую я вижу в SO. Когда я увижу новые, я добавлю их в свой список вопросов и ответов (другие тоже не стесняются, и исправьте меня, если увидите ошибки!)
Isn't a pointer and an array basically the same thing? Follow up: both*(ptr)
and *(arr)
, or ptr[0]
and arr[0]
give the same thing, why?
How come arr
and &arr
is the same value?
Follow up: why do I get a different value printing arr+1
vs &arr+1
?