packa Wrote:Что происходит при присвоении kakoy_to_massive[5]? Ведь ее как бы не существует, сама создается? (или переходит снова на 0 элемент, затирая старое значение?)
Ты пытаешься обратиться к &kakoy_to_massive[4] + sizeof(int) адресу памяти. В данном случае тебе повезло, но в реальности по этому адресу может лежать всё что угодно.
packa Wrote:Я больше директив и классов боюсь =)
Каких ещё "директив" - компиляторных, что ли? Их и не нужно всё помнить, лишь с десяток самых распространённых. На классы пока забей - лучше вначале хорошо выучи "чистый" С, без "плюсовых" фич.
gamecreator Wrote:одной точкой выхода
Спасибо, кэп. Я про читабельность говорил.
gamecreator Wrote:у тебя он тоже есть, хоть и занимает немного меньше места. и его существование не очевидно.
Неправда, у меня никакого двумерного массива нету. Из всех char-строчек типа "Zero" инициализируется лишь одна - та, что и будет в итоге возвращена.
gamecreator Wrote:чтобы существовал после выхода из функции
Это я знаю. Я не понимаю, зачем ему "после выхода из функции" нужно существовать
gamecreator Wrote:мне же проще использовать сборщик мусора и создавать ВСЁ в куче, не парясь про утечки памяти при чем-угодно.
Это не "сборщик мусора" - это ты, наоборот, руками всё убираешь. Я и не говорю, что это плохо (сам так постоянно делаю), но при громоздкой классовой структуре для меня проще работать со смарт-пойнтерами.
gamecreator Wrote:в отладочной (а может и не только) сборке программа скажет в какой строке какого файла произошло исключение и покажет стек вызовов. более того, в режиме отладки среда отловит исключение и перенесет меня к той строке кода, которая его вызвала.
А причём тут отладка? Ведь всё равно нет 100% гарантии того, что в ней тебе удастся создать такую ситуацию, при которой исполнится незаметная на первый взгляд, но критичная строчка. Придётся писать юнит-тесты, в то время как компилятор даст тебе 100% уверенность в своей правоте.
gamecreator Wrote:более того, через отрицательный индекс можно реализовать дополнительную функциональность, например доступ к элементу с конца массива.
Дык и я смогу. У меня здесь просто будет варнинг, но я его пропущу. Я же и не говорю, что варнинг - это плохо...
Berserker Wrote:Отрицательный константный индекс будет запрещён при компиляции.
Кем запрещён? С какого это перепугу, кто-то запретит указывать мне отрицательный индекс в операторе "квадратных скобок" в моём собственном классе?