Массив - это, строго говоря, указатель на начало блока памяти. Так что str
- это char *
, который указывает на начало 80 символов.
Когда вы индексируете в массив, скажем, позицию 53, следующее эквивалентно: str[53]
совпадает с *(str + 53)
, так как str это просто char *
, а добавление 53 к символьному указателю вернет указатель, чтобы получить значение внутри, вы должны использовать звездочку для разыменования указателя. По сути, запись массива делает код более читабельным при определенных обстоятельствах.
На самом деле отличный маленький трюк с массивами char - это когда вы хотите пропустить какой-то начальный текст при копировании строки. Например. скажем, ваш массив str[80]
содержит строку "1023: error in code!"
. И вы хотите, чтобы отобразить только строку без числа перед. В этом случае вы можете сказать printf( "%s", str + 6 )
, и будет напечатан только "error in code!"
.