Фичи | |
---|---|
alex; Автор Сообщений: 2855 Откуда: Москва Дата регистрации: 23.11.2004 |
Открыл для себя зубчатые(jagged) массивы.
Оказывается Java и C# позволяют такие вещи
А в обычном Си у встроенных массивов нет даже свойства Length - видимо используют собственные контейнеры на указателях и своих типах. |
Re: Фичи | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
В обычном Си массив это просто адрес блока памяти, где по очереди хранятся элементы (одного и того же типа). Размер массива как таковой нигде не хранится (он используется лишь во время компиляции, а не во время исполнения). Синтаксис myArray[i] это просто вариант разыменования указателя. Он идентичен операции *(myArray+i) (взять значение элемента по указателю myArray сдвинутому на i элементов - т.е. по сути адрес полученный как адрес_нулевого_элемента+i*sizeof(тип_элемента)).
Многомерные массивы в Си чем-то похожи на фоксовые - они просто абстракция над всё тем же линейным блоком памяти где по очереди хранятся все элементы массива. Но т.к. в Си "указатель" это совершенно нормальный/полноценный тип, и позволяет работать с собой как с любым другим типом данных, то вполне можно сделать "массив указателей", а значит и реализовать jagged массив - это будет массив указателей на отдельные (при том разного размера, и расположенных не "подряд" в памяти) массивы. Естественно что в данном случае придётся самому заботиться о проверках выхода за границы массива, т.е. вероятно где-то ещё и размерности этих самых массивов сохранять - впрочем, это совершенно обычное дело для си, и источник 99% всех багов и косяков в коде ------------------ WBR, Igor |
Re: Фичи | |
---|---|
medstrax Забанен Сообщений: 5964 Дата регистрации: 23.03.2007 |
ну на голом си в 2020 пишут редко, а в плюсах с STL проблема неактуальна. |
Re: Фичи | |
---|---|
S-type Сообщений: 2969 Дата регистрации: 24.04.2004 |
Давно так не смеялся... Ещё в 91-м году преподаватель объяснил, что в Си массив - это просто кусок памяти.. |
Re: Фичи | |
---|---|
alex; Автор Сообщений: 2855 Откуда: Москва Дата регистрации: 23.11.2004 |
А что смешного в том, что в 95 когда нам давали плюсы, я работал и пропустил почти всё?
Таки я бы тоже посмеялся, вот про Lint есть какие шутки? |
Re: Фичи | |
---|---|
alex; Автор Сообщений: 2855 Откуда: Москва Дата регистрации: 23.11.2004 |
мтк все так же в 21 веке создаются малые электронные системы, на которые переносятся системы
написанные на С и современные анализаторы исходного кода позволяют быстро создавать компиляторы для языков низкого уровня для новых систем. А языки высокого уровня в помощь. |
Re: Фичи | |
---|---|
alex; Автор Сообщений: 2855 Откуда: Москва Дата регистрации: 23.11.2004 |
Оказывается можно логировать инициализацию
|
© 2000-2024 Fox Club  |