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.59
Яндекс индекс цитирования