Форум программистов, компьютерный форум CyberForum.ru

динамические массивы в wxDev-C++ - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Точка и Треугольник http://www.cyberforum.ru/cpp-beginners/thread98332.html
Даны действительные числа x1, x2, x3, y1, y2, y3. Принадлежит ли начало координат треугольнику с вершинами (x1, y1), (x2, y2), (x3, y3)?
C++ Сортировка массива структур... Здравствуйте! Не могли бы вы выложить примеры или кинуть ссылочку на интересную статью по сортировке массива структур. Имеется массив структур, каждая структура из 5 полей, где 1 - символьное, а остальные - вещественные числа. Необходимо организовать сортировку данного массива структур по каждому из полю. Как сортировать обычные массивы я знаю, а вот массивы структур не получается. Например,... http://www.cyberforum.ru/cpp-beginners/thread98318.html
Разделить строку на слова. C++
В общем есть строка, и ее надо разбить на массив строк чтобы каждое слово было в ствоей строке. Знаю что надо пользоваться strstr но в виду неопытности даже не знаю как сделать...
двухмерный массив C++
Не получается сделать что бы все 4 символа ходили по массиву рендом, если не трудно подскажите. #include <iostream> #include <iomanip> #include <cstdio> #include <cstdlib> void Flip(char& x, char& y){ char temp = x; x = y;
C++ использование assemblera в С++ http://www.cyberforum.ru/cpp-beginners/thread98296.html
Здравствуйте, господа программисты. С ассемблером раньше не сталкивался. Поэтому нужна помощь. В коде С++ нужно сделать ассемблеровскую вставку. В ней должно рассчитываться арифметическое выражение. (9-(b+2)^2)/(b^2+10*b+25^3) Заранее спасибо)
C++ простой класс покажите пожалуйста самую простою классу, корорый показывает "Hello World" подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
23.02.2010, 23:33     динамические массивы в wxDev-C++
Цитата Сообщение от paramount2u Посмотреть сообщение
Во всех книгах ( которые читал ) пишут что размер объявляемого массива должен быть константой
Вот кусок из "Полный справочник С" Шилдта:
Массивы переменной длины

В С89 размерности массивов необходимо объявлять при помощи выражений из целых констант, причем размер массива фиксируется во время компиляции. В силу определенных обстоятельств, в С99 это правило было изменено. В С99 можно объявить массив, размерности которого определяются любыми допустимыми целыми выражениями, в том числе и такими, значения которых становятся известны только во время выполнения. Такой массив называется массивом переменной длины (variable-length array, VLA). Однако такими массивами могут быть только локальные массивы (то есть те, у которых область видимости — прототип или блок). Вот пример массива переменной длины:

void f(int diml, int dim2)
{
int matrix[diml][dim2]; /* двумерный массив переменной длины */
/* ... */
}

В данном случае размер matrix определяется значениями, передаваемыми функции f() через переменные dim1 и dim2. Таким образом, в результате каждого вызова f() может получиться массив matrix с самыми разными измерениями.

Важно понять, что массивы переменной длины за время "своей жизни" не меняют своих размеров. (Иными словами, они не являются динамическими.) На самом деле массив переменной длины создается с другим размером каждый раз, когда встречается его объявление.

Можно указать массив переменной длины неуказанного размера, используя в качестве размера звездочку, *.

Появление массивов переменной длины вызвало небольшое изменение в операторе sizeof. Вообще говоря, sizeof — это оператор, который вычисляется во время компиляции. То есть во время компиляции он обычно превращается в целую константу, значение которой равно размеру типа или объекта. Однако если sizeof применяется к массиву переменной длины, то свое значение он получает только во время выполнения. Это изменение было необходимо потому, что размер массива переменной длины нельзя узнать до времени выполнения.

Одной из главных причин появления массивов переменной длины является желание упростить программирование численных методов. Конечно, это средство применяется довольно широко. Но помните — массивы переменной длины не поддерживаются Стандартом С89 (и в языке C++).
Учитывая последнее предложение - наверное gcc это, как конструкцию ANSI C 99 воспринимает, потому и не ругается...
 
Текущее время: 14:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru