Честно говоря мне лень искать, но совсем недавно на opennet'е был очередной обзор по скорости выполнения программ на различных языках программирования и необходимое количество для этого выполнения оперативной памяти. Так вот, результаты показывают, что C++ не зря до сих пор популярен.
const char a [] = «Brutal» - константный указатель на константные данные.
char * const a = «Brutal» - константный указатель на неконстантные данные (можем залезть(на запись) в константную область памяти - со всеми вытекающими).
const char *a = «Brutal» - неконстантный указатель на константные данные (можем потерять строку).
Да, С++ местами просто ужасен... Но тем не менее, есть задачи где альтернативы С++ не существует, именно потому что там есть и ООП, и шаблоны, и всякая низкоуровневая фигня. Но никто не говорил, что ВСЕ должны писать на С++ - кому надо, тот пишет на С++, кто не может, тот пишет на яве;-)
Это не char, это ты не разобрался с модификаторами типов в C++.
Пиши так, если хочешь, чтобы все было константно:
char const * const a = "...";
На самом деле, все варианты (константный указатель, указатель на константные данные) имеют смысл, и применяются там, где нужно. Поэтому они и есть в C++. Это нужно просто знать и уметь пользоваться.
Этот аргумент уже устарел. Пока что все твои примеры - полная лажа. Если идиоты могут писать на С++ идиотский код, это не значит, что язык плох. Нормальный код на С++ писать можно легко и непринужденно. Но я видел идиотский код и на Java , и на C# и на Python.
Дай я тебя удивлю. В спп можно ещё вот так сделать.
int *foo(void)
{
return (int *)0x12345678;
}
И ещё куча разных весёлых примеров, всех и не перечислишь. Но ты пойми, что те, кто с этим работает хорошо себе представляет, с чем он работает. Так что твои выпады в стиле jvm и всё такое здесь не к месту.
Кстати в с++ уже можно объявлять массив с размером, неизвестным во время компиляции?
alloca можно всегда использовать для этой цели. На самом деле массивы на стеке не очень хорошо создавать, потому что стек обычно сильно ограничен (по сравнению с хипом), и выход за пределы стека череват sigsegv-ом.