MyTetra Share
Делитесь знаниями!
О, смотри-ка какое хорошее место. Дайте два!
В чем разница объявления строки как массива и как указателя
10.12.2008
12:46
Раздел: Компьютер - Программирование - Язык C

Вопрос: Я слышал, что char a[] эквивалентно char *a...

Ответ: Ничего подобного! (То, что Вы слышали, касается формальных параметров
функций) Массивы - не указатели. Объявление массива "char a[6];"

требует определенного места для шести символов, которое
будет известно под именем "a". То есть, существует место под именем
"a", в которое могут быть помещены 6 символов. С другой стороны,
объявление указателя "char *p;" требует места только для самого
указателя. Указатель будет известен под именем "p" и может указывать
на любой символ (или непрерывный массив символов).

Как обычно, лучше один раз увидеть, чем сто раз услышать.
Объявление

char a[] = "hello";
char *p = "world";

породит структуры данных, которые могут быть представлены так:

+---+---+---+---+---+---+

a: | h | e | l | l | o |\0 |

+---+---+---+---+---+---+


+-----+ +---+---+---+---+---+---+

p: | *======> | w | o | r | l | d |\0 |

+-----+ +---+---+---+---+---+---+


Так же в этом разделе:
← Содержание ...
 
MyTetra Share v.0.35
Яндекс индекс цитирования