Цитата(Who_are_you? @ Dec 25 2013, 18:09)

А как сюда добавить новый текст не вводя новых переменных и без циклов?
Никак. В С (и С++) нет встроенного типа 'строка'. Есть просто массив из символов (байтов). Так же в С (и С++) нет динамических массивов, т.е. массив получает свой размер при его объявлении, и в дальнейшем он (размер) меняться не может (пока оставим в стороне указатели и заказ динамической памяти с кучи). В качестве строк в С используется массив символов (байтов), а конец строки обозначает байт с нулевым значением.
Конструкция
char array1[25]="Text number 1"; создает массив на 25 байтов, в который помещается (побайтно) тест
Text number 1, а хвост массива затирается нулями.
Конструкция
parray = array1; помещает адрес этого массива (адрес первого элемента) в переменную-указатель
parray. Теперь ее можно использовать в качестве строки везде, где ожидается С строка. Но тело самой строки (ее символы) так и остаются в массиве
array1 (там лежит 13 символов и 12 нулей), и вы вполне можете в этот массив приписать еще что нибудь (например через
strcat(array1," another str") или
strcat(parray," another str") - результат будет один и тот же), главное не выйти за границы массива (т.е. у вас еще есть место под 11 симолов - не забудьте про завершающий строку 0, ему тоже нужно место!)
Цитата
А приведение типов (parray = (char *)array1;) разве тут требуется?
Нет
Цитата
Иногда ругается, не вникал особо, почему, поэтому написал чтоб уж 100%.
Ругаться будет тут (и то варнингом и в С++ только) на -
Код
char* parray = "Text number 1";
т.к. литеральная строка (
"Text number 1") имеет тип
const char*, а в С++ присваивать const версию указателя в не-const нельзя, это ошибка (а конкретно для строковых литералов уровень ошибки понизили, и это является предупреждением, иначе бы 80% старого С кода посыпалось бы)
Что бы не ругалось, надо писать
Код
const char* parray = "Text number 1";