MyTetra Share
Делитесь знаниями!
В чем разница объявления строки как массива и как указателя
Время создания: 10.12.2008 12:46
Раздел: Компьютер - Программирование - Язык C (Си)
Запись: xintrea/mytetra_syncro/master/base/0000000366/text.html на raw.github.com

Вопрос: Я слышал, что 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.65
Яндекс индекс цитирования