Здравствуйте, Sitr, Вы писали:
S>В чем разница между char *buffer = new char[50]; и просто char *buffer.
S>Зачем мне заводить указатель через new, могу завести и без new?
S>Я лишь учусь программировать, не смог найти ответ на этот вопрос.
Постараюсь ответить проще: когда ты пишешь :
char myBuff[128];
память под эту переменную выделяется сразу, т.е. когда программа запустилась у тебя есть myBuff размером 128 байт.
Однако во многих случаях ты просто напросто можешь не знать сколько тебе понадобится памяти — это станет известно только в ходе выполнения программы:
char *myBuff;
int mySize = CallSomeFunc();
myBuff = new char[mySize];
В первом случае ты выделяешь память статически, во втором — динамически. Когда ты выделил память динамически ее неплохо бы

потом удалить, используя оператор delete.
S> И еще один вопрос по стилю программирования. Как лучше делать — упрощать код, делая его без замудренных логических конструкций(но при этом у меня получается дублирование кода) или исбавиться от дублирования, но при этом читабельность кода страдает... Ранее избавлялся от дублирования(знал что мой код никому читать не придеться)
Поясни на примере пожалуйста, так очень сложно понять что ты имеешь ввиду.