Поскольку строка является символьным указателем, массив строк - это массив (char *)
- смежный вектор (char *)
указателей.Изменение строки приведет к изменению памяти, на которую указывает каждый элемент.Теперь, если вы объявили, что он статически распределен:
char foo[10][10];
, то с точки зрения разметки памяти он неотличим от
char foo2[100];
, и было бы возможно повредить память, написав послезаявленный размер;это одна из причин, по которой следует использовать std::string
вместо строк в стиле C, что, возможно, является лучшим примером того, почему C является паршивым языком для программирования приложений.(Массив std::string
будет массивом объектов, в каждом из которых будет храниться (char *)
, где вам не о чем беспокоиться - std::string
сделает это за вас, и гораздо надежнее.)