| Другое > Hard'n'Soft |
| Програмирование на C++ |
| << < (19/25) > >> |
| GManiac:
--- Цитата ---у паскаля возможностей же меньше --- Конец цитаты --- Столько же. В чём-то меньше, в чём-то больше. Я имею в виду дельфи, т.к. в древнем паскале не вижу смысла (вот тут не надо вспоминать про другие реализации паскаля и про то, что язык в дельфях называется Object Pascal, сегодня он официально называется Дельфи). Директивы препроцессора есть. ОО примочки есть, видимость членов, class var, class procedure, проперти, методы структур, метаклассы, интерфейсы, перегрузка, шаблоны, полиморфизм и дры и дры, короче, хватает. Есть свои особенности у дельфей и у сей, но я с дельфями не испытывал проблем типа "вот такой фишки катастрофически не хватает". А вот пропертей мне не хватало в сях, я нашёл где-то огромный макрос для их имитации, но компилятор VC сильно ругался, выдавая какую-то внутреннюю ошибку (т.е. его конкретно клинило), пока я не понял, что его замыкает именно из-за этих макросов. Правда, в BC проперти были, но мне нужен был VC. Просто дело в том, что си изначально позиционируется как "серьёзный язык", поэтому его курс изучения более обширный, чем паскалевский. Типа если взялся за си, изучай всё сразу. В сях те же директивы препроцессора считаются обычным делом, поэтому их включают в стандартный курс по изучению языка. Разбивка на интерфейс и реализацию в разных файлах (правда, формально это правильно). Постоянная возня со ссылками и указателями - тоже обычное дело, поэтому их тоже включают в курс. Но это не значит, что в дельфях этого нет. Кому надо, тот может использовать ссылки на переменные, записать что угодно по адресу любой переменной. Массивы как параметры функций (я имею в виду, когда параметр объявлен как array of, без размерности, тогда можно использовать любые индексы, но фактически передаётся адрес этого массива или того индекса, с которого надо начинать, который ты укажешь при вызове функции (массив как бы сдвигается на нужную позицию). При этом не надо заморачиваться ни с какими звёздочками и другими закорючками или постоянно помнить, что идентификатор массива в сях = его нулевой элемент). Пример: function sum( const a : array of integer ) : integer; begin Result := a[ 0 ] + a[ 1 ]; end; var dyn_mas : array of integer; stat_mas : array[ 1..5 ] of integer; begin sum( dyn_mas ); sum( dyn_mas[ 3 ] ); sum( stat_mas ); end; Или так: function sum( const a : array of integer ) : integer; var i : integer; begin Result := 0; for i := low( a ) to high( a ) do inc( Result, a[ i ] ); end; begin sum( [ 1 ] ); // sum( [ 2, 4, 9, 3 ] ); // end; А те возможности, которых нет... А так ли они вообще нужны? Например, множественное наследование. Я уверен, что если тебе вдруг доведётся сопровождать чужой код, в котором много множественного наследования, ты начнёшь его проклинать. И вообще, как я уже сказал, возможности нарастить можно любые. Но синтаксис языка останется. --- Цитата: Mr2 от 24 Май 2011, 20:26:29 ---Можешь также вызывать указатель на класс без ->. (*obj).one; --- Конец цитаты --- Один хрен лишние символы и различный синтаксис для классов и структур. Во-первых, зачем я должен постоянно помнить об этих различиях? А во-вторых, если я вдруг поменяю класс на структуру или наоборот (в дельфях запросто), мне теперь все обращения менять? --- Цитата ---Это зависит не от языка, а от выбора программиста. --- Конец цитаты --- От языка тоже зависит. Есть пример из Фортрана, где запятая или точка в коде меняет смысл этого кода. Надо понимать, что люди не машины, поэтому синтаксис должен быть составлен так, чтобы облегчить жизнь людям. В сях он не очень дружественный. |
| Mr2:
--- Цитата: GManiac ---Один хрен лишние символы и различный синтаксис для классов и структур. Во-первых, зачем я должен постоянно помнить об этих различиях? --- Конец цитаты --- Ну потому что структуры это структуры, а класс это класс! :D И не такой уж он и различный. --- Цитата: GManiac ---А во-вторых, если я вдруг поменяю класс на структуру или наоборот (в дельфях запросто), мне теперь все обращения менять? --- Конец цитаты --- Ну это же по детски. А если я захочу поменять имя переменной, что мне его в каждой строчке менять? Отношение к классам серьёзное, если предётся менять класс на структуру или наоборот, то скорее всего это ошибка в проэктировании. --- Цитата: GManiac ---От языка тоже зависит. --- Конец цитаты --- Я говорю что язык даёт большие возможности, а использовать их или нет это решает программист.Его никто не заставляет использовать указатели, классы, контейнеры..... |
| gepar:
--- Цитата: GManiac --- Во-первых, зачем я должен постоянно помнить об этих различиях? --- Конец цитаты --- Ну ты же запомнил что int хранит только целые числа :) --- Цитата: GManiac ---А во-вторых, если я вдруг поменяю класс на структуру или наоборот (в дельфях запросто), мне теперь все обращения менять? --- Конец цитаты --- Меняй сколько влезет туда-сюда, абсолютно ничего не поменяется (если указаны изначально спецификаторы public и private), вызов через стрелку нужен для указателей в любом случае. --- Цитата: GManiac ---Разбивка на интерфейс и реализацию в разных файлах (правда, формально это правильно). --- Конец цитаты --- Ну это не обязательно, хотя и удобно. --- Цитата: GManiac ---Постоянная возня со ссылками и указателями - тоже обычное дело, поэтому их тоже включают в курс. --- Конец цитаты --- Да что вы все с этими указателями не помиритесь, удобная штука и если раз до конца разобраться то больше с ней проблем не будет возникать, не понимаю почему их все так не любят и не могут понять что же он из себя представляет . --- Цитата: GManiac --- Массивы как параметры функций (я имею в виду, когда параметр объявлен как array of, без размерности, тогда можно использовать любые индексы, но фактически передаётся адрес этого массива или того индекса, с которого надо начинать, который ты укажешь при вызове функции (массив как бы сдвигается на нужную позицию). --- Конец цитаты --- Так в с++ так же и точно так же как и в делфи с одномерным массивом это прокатывает, а если больше пространств то нужно указывать все кроме первого. --- Цитата: GManiac ---При этом не надо заморачиваться ни с какими звёздочками и другими закорючками или постоянно помнить, что идентификатор массива в сях = его нулевой элемент). --- Конец цитаты --- Ну то что в с++ считается всё с 0 это же классика, но никто не запрещает не использовать 0 элемент, заполняй и используй в циклах элементы начиная с 1го и всё если так не нравиться цифра 0. Ещё описывание всех переменных что надо отдельно вверху это конечно с одной стороны приучает к порядку, но блин это адски неудобно постоянно вдруг что понадобиться лезть и дописывать и сводит на нет локальность переменных. --- Цитата: GManiac ---Например, множественное наследование. --- Конец цитаты --- Ну когда сам что-то делаешь то оно лишним не бывает, хотя я использовал раза 3 пока что . Ну а синтаксис вещь такая что раз запомнил и всё, не так уж и много зарезервированных слов, которые часто используются так что запоминаются они быстро. Добавлено позже: --- Цитата: Mr2 ---Ну это же по детски. А если я захочу поменять имя переменной, что мне его в каждой строчке менять?Отношение к классам серьёзное, если предётся менять класс на структуру или наоборот, то скорее всего это ошибка в проэктировании. --- Конец цитаты --- Какая ошибка в проэктировании? Между ними в с++ разници никакой кроме того что в структуре по умолчанию без спецификатора доступа всё public, а в классе private. Больше никаких различий между ними нет. |
| Mr2:
--- Цитата: gepar ---Ещё описывание всех переменных что надо отдельно вверху это конечно с одной стороны приучает к порядку, но блин это адски неудобно постоянно вдруг что понадобиться лезть и дописывать и сводит на нет локальность переменных. --- Конец цитаты --- В C++ в любом месте можно переменную объявлять.Или ты не про C++? ;) --- Цитата: gepar ---Какая ошибка в проэктировании? Между ними в с++ разници никакой кроме того что в структуре по умолчанию без спецификатора доступа всё public, а в классе private. Больше никаких различий между ними нет. --- Конец цитаты --- У меня в кармане нет Ничего, ничего кроме полного кармана конфет. Как то неоднозначно звучит. Это очень большая разница. Почему проанализируй сам.(если не справишья обращяйся) --- Цитата: Mr2 ---И не такой уж он и различный. --- Конец цитаты --- В смысле синтаксис. |
| GManiac:
Mr2, про точки и стрелки. gepar, про указатели и ссылки. Коротко: зачем нужны лишние телодвижения, запоминать ненужные различия и потом о них вспоминать, когда можно обойтись без всего этого? То же и с логическими и битовыми операторами. Лёгкая возможность спутать вместе логическое выражение и арифметические - это бред уже при проектировании самого языка. Пускай си делался как надстройка над асмом, но такая фишка даже в этом случае неактуальна, имхо. У 68к специально был набор команд SCC (Set if Condition), для вычисления логических выражений. Команда Sсс устанавливала байт $FF (-1), если условие верное, или $00, если неверное. Для таких байтов и арифметические и логические операции одинаковы: 0 and FF = 0, 0 or FF = FF, not 0 = FF. Выражение "if (var) ..." не дружественно человеку (var <> 0). Синтаксически не очевидно, что оно значит. Возможность присваиваний внутри выражений (в т.ч. в условиях) тоже ничего хорошего не сулит. Опять же, человек не машина. Правильнее предотвратить допущение таких простых ошибок, чем валить вину и лишнюю работу на человека. Ремни безопасности придуманы не для того, чтобы брать штрафы. Я почему вообще залез в эту тему, потому что наблюдая её, в последних страницах вижу, что gepar что-то мутит (усложняет), пытаясь выполнить какую-нибудь ерунду (в смысле что-то простое). Задача программиста (и не только) сделать проще, быстрее и понятнее. |
| Mr2:
--- Цитата: GManiac от 24 Май 2011, 23:45:06 ---Mr2, про точки и стрелки. --- Конец цитаты --- Всё просто, не знаю в чём проблема. ;) --- Цитата: GManiac от 24 Май 2011, 23:45:06 ---Коротко: зачем нужны лишние телодвижения, запоминать ненужные различия и потом о них вспоминать, когда можно обойтись без всего этого? --- Конец цитаты --- Я и говорю что можно программировать и без указателей, и без всего что тебе не нравится. --- Цитата: GManiac от 24 Май 2011, 23:45:06 ---То же и с логическими и битовыми операторами. Лёгкая возможность спутать вместе логическое выражение и арифметические - это бред уже при проектировании самого языка. Пускай си делался как надстройка над асмом, но такая фишка даже в этом случае неактуальна, имхо. У 68к специально был набор команд SCC (Set if Condition), для вычисления логических выражений. Команда Sсс устанавливала байт $FF (-1), если условие верное, или $00, если неверное. Для таких байтов и арифметические и логические операции одинаковы: 0 and FF = 0, 0 or FF = FF, not 0 = FF. Выражение "if (var) ..." не дружественно человеку (var <> 0). Синтаксически не очевидно, что оно значит. --- Конец цитаты --- Всё просто, нужен логический пиши два символа || .Это как ЖЫ, ШЫ пиши с мягким знаком :lol:. --- Цитата: GManiac от 24 Май 2011, 23:45:06 ---Возможность присваиваний внутри выражений (в т.ч. в условиях) тоже ничего хорошего не сулит. Опять же, человек не машина. Правильнее предотвратить допущение таких простых ошибок, чем валить вину и лишнюю работу на человека. Ремни безопасности придуманы не для того, чтобы брать штрафы. --- Конец цитаты --- Серьёзных проблем никогда не вызывало.(Возможность присваиваний внутри выражений) --- Цитата: GManiac от 24 Май 2011, 23:45:06 ---Я почему вообще залез в эту тему, потому что наблюдая её, в последних страницах вижу, что gepar что-то мутит (усложняет), пытаясь выполнить какую-нибудь ерунду (в смысле что-то простое). Задача программиста (и не только) сделать проще, быстрее и понятнее. --- Конец цитаты --- Это наверное из за той книжки что он читает.(Мудрят Дейтлы! :) ) |
| GManiac:
Короче, всё понятно ;) Добавлено позже: --- Цитата ---Всё просто, нужен логический пиши два символа || .Это как ЖЫ, ШЫ пиши с мягким знаком . --- Конец цитаты --- Всё просто, хочешь завести машину, вылезай, раскручивай стартёр, потом садись, крути рычаги и в путь! Хотя ведь можно проще, одной кнопочкой, но зачем? ;) |
| MetalliC:
--- Цитата: GManiac ---Mr2, про точки и стрелки.gepar, про указатели и ссылки. Коротко: зачем нужны лишние телодвижения, запоминать ненужные различия и потом о них вспоминать, когда можно обойтись без всего этого? --- Конец цитаты --- коротко: чтобы компилятор выдал именно такой код, какой хочет программист. если я пишу на С, я уже довольно точно знаю во что это будет скомпилировано да и ты же вроде с как минимум одним асмом знаком ? тогда не должно возникать вопросов про указатели/ссылки и т.п. |
| Mr2:
--- Цитата: GManiac от 25 Май 2011, 00:30:47 ---Добавлено позже: Всё просто, хочешь завести машину, вылезай, раскручивай стартёр, потом садись, крути рычаги и в путь! Хотя ведь можно проще, одной кнопочкой, но зачем? ;) --- Конец цитаты --- Всё просто, тормаза придумал трус, а сцепление вообще непонятно зачем нужно.... :( Всегда можно лучше, можно хуже, но мы имеем то что имеем.Тут дело скорее устраивает это тебя или нет. |
| gepar:
--- Цитата: GManiac ---Коротко: зачем нужны лишние телодвижения, запоминать ненужные различия и потом о них вспоминать, когда можно обойтись без всего этого? --- Конец цитаты --- Звучит как "давайте использовать только double, int на мыло - он ущербный!" :) Ну не используй указатели, в дельфи обходишься вот и здесь значит смог бы обойтись (хотя с ними удобнее же). --- Цитата: GManiac ---Возможность присваиваний внутри выражений (в т.ч. в условиях) тоже ничего хорошего не сулит. --- Конец цитаты --- Это хорошо что ты напомнил, не любил я это в паскале, но забыл до какой степени не любил, теперь вспомнил. --- Цитата: GManiac ---Я почему вообще залез в эту тему, потому что наблюдая её, в последних страницах вижу, что gepar что-то мутит (усложняет), пытаясь выполнить какую-нибудь ерунду (в смысле что-то простое). Задача программиста (и не только) сделать проще, быстрее и понятнее. --- Конец цитаты --- Ну вот, теперь я мутю да ещё и виноватый :D Я просто не ищу лёгкие способы (да, я мог изначально перекопировать всё из своего символьного массива и всё), мне интересно как это можно сделать по другому. Как видишь в с++ всё не столь прямолинейно и существует очень много стандартных возможностей, о которых я и спрашиваю в теме. А вот есть ли в дельфи возможность запихнуть в буфер входящих данных данные для ввода чтобы при будущем запросе на чтение данных в переменную из буфера потока были взяты нужные данные). Только давайте не будем трогать эмуляцию нажатий клавиатуры, это получиться уж очень сложно (в смысле кода много, а пользы мало). --- Цитата: GManiac ---Всё просто, хочешь завести машину, вылезай, раскручивай стартёр, потом садись, крути рычаги и в путь! Хотя ведь можно проще, одной кнопочкой, но зачем? --- Конец цитаты --- А вот это какраз про дельфи, хочешь новый локальный счётчик - листай n страниц назад и дописывай новую переменную для своего счётчика в объявления. |
| HardWareMan:
--- Цитата: gepar от 24 Май 2011, 20:10:49 ---...а вот дельфи после паскаля что-то показалась мечтой быдло-программиста (программирование мышкой же!) и я после созданий пары кнопок да окошек (без путеводителя найти ничего невозможно, даже банально откомпилировать скопипащенный код) закинул это дело. --- Конец цитаты --- Т.е., ты никогда не программил на VС и всегда программишь на чистом API, описывая окна и его элементы по ходу исполнения программы, да? Не смеши мои тапки. Любая ГУевая программа требует определенного затрата человека-часов на, как ты назвал, "программирование мышкой". А сколько такого "программирования" занимает программирование под 1С, ты бы только знал... Пиши консольные вещи для гиков на чистом API. В виндах тебе делать нечего, я так считаю. PS Реально работающий код: --- Код: ---var EN:array of record Number,Variant:dword; Mess:string; end; RU:array of array of string; // При ините SetLength(EN,0); SetLength(RU,0); // При загрузке данных MySQLResult:=MySQLClient.Query('SELECT ID, Message FROM EN ORDER BY ID ASC', True, OK); if OK and (MySQLResult.RowsCount>0) then begin SetLength(EN,MySQLResult.RowsCount); MySQLResult.First; for c:=0 to MySQLResult.RowsCount-1 do begin EN[c].Number:=GetNumBytes(MySQLResult.FieldValue(0)); EN[c].Variant:=0; EN[c].Mess:=MySQLResult.FieldValue(1); MySQLResult.Next; end; end; v:=0; repeat MySQLResult:=MySQLClient.Query('SELECT Number, Variant, Message FROM RU WHERE Variant="'+ToUTF8(IntToStr(v))+'" ORDER BY Number ASC', True, OK); if OK and (MySQLResult.RowsCount>0) then begin SetLength(RU,Length(RU)+1); if v=0 then SetLength(RU[v],MySQLResult.RowsCount) else SetLength(RU[v],Length(RU[0])); MySQLResult.First; for c:=0 to Length(RU[v])-1 do RU[v][c]:='--'; for c:=0 to MySQLResult.RowsCount-1 do begin if GetNumBytes(MySQLResult.FieldValue(0))<Length(RU[v]) then RU[v][GetNumBytes(MySQLResult.FieldValue(0))]:=FromUTF8(MySQLResult.FieldValue(2)); MySQLResult.Next; end; end; inc(v); until (MySQLResult.RowsCount=0) or not OK; // А для обнуления достаточно SetLength(EN,0); SetLength(RU,0); --- Конец кода --- |
| GManiac:
--- Цитата: MetalliC от 25 Май 2011, 00:34:13 ---коротко: чтобы компилятор выдал именно такой код, какой хочет программист. --- Конец цитаты --- Если хочешь такой код, используй асм. Никакой си его не даст. Обычно компиляторы си дают более оптимизированный код, чем дельфя, но дело не в языке, а в оптимизаторе. (В частности поэтому дельфи так быстро компилирует). У того же си билдера код медленнее работает. Проверял на своём эмуле SN76489, перегнал с дельфей на BCB, потом на VC. Код BCB оказался в 2 раза медленней, а VC - в 1.5 раза быстрее дельфишного. Приведи реальные примеры из реальных приложений, где си выполняет роль ЯВУ (а не перевирание асма), когда необходимо смешивать логические и арифметические значения. Для человека это две разные вещи. --- Цитата ---тогда не должно возникать вопросов про указатели/ссылки и т.п. --- Конец цитаты --- хы, да на сях всё запутанней :) В асме есть всего два случая операндов: immediate и address. Изредка указатель на адрес. --- Цитата ---Звучит как "давайте использовать только double, int на мыло - он ущербный!" --- Конец цитаты --- Ну, для целых и вещественных типов арифметика немного разная, а в целом - да, МЕНЬШИЕ типы были актуальны из-за прошлых ограничений. Для отдельных переменных сегодня это почти не актуально, если ты быдлокодишь, а не пишешь системную прогу. Выигрыш в скорости будет почти не ощутим. Зато если вдруг из-за переполнения твоя прога перестанет нормально работать, испытаешь головную боль ;) Mr2, напиши на сях мои примеры отсюда: http://www.emu-land.net/forum/index.php/topic,49888.msg722215.html#msg722215 --- Цитата ---А вот это какраз про дельфи, хочешь новый локальный счётчик - листай n страниц назад и дописывай новую переменную для своего счётчика в объявления. --- Конец цитаты --- Да, это скорее минус дельфей, т.к. он мешает соблюдению локальности переменной (с точки зрения программиста), т.е. переменная должна использоваться как можно в меньшем промежутке текста, без ущерба логике программы. Модули в n страниц говорят о плохом программисте ;) --- Цитата ---Это хорошо что ты напомнил, не любил я это в паскале, но забыл до какой степени не любил, теперь вспомнил. ... Как видишь в с++ всё не столь прямолинейно и существует очень много стандартных возможностей, о которых я и спрашиваю в теме. --- Конец цитаты --- Для тебя языки это пока что "поиграться", а для меня это работа. Если тебе придётся работать с чужим непрямолинейным, нестандартным или медитативным кодом (а можно и с собственным, но написанным в прошлом) в проекте хотя бы на 50 тыщ строк, заговоришь по-другому ;) На сях самая большая и реальная программа, которую я делал, был дизасм http://www.emu-land.net/forum/index.php?topic=15957.0 , а позже анализатор кода на его основе. Щас понимаю, что написать это на дельфях было бы проще и быстрее. Да, вот что хотел спросить. Можно объявлять функции без указания имён параметров: void func( int ) {} Вопрос: КАК их использовать в теле функции? |
| gepar:
--- Цитата: GManiac ---На сях самая большая и реальная программа, которую я делал, был дизасмhttp://www.emu-land.net/forum/index.php?topic=15957.0 --- Конец цитаты --- Не запускается. --- Цитата: GManiac ---Да, вот что хотел спросить. Можно объявлять функции без указания имён параметров:void func( int ){}Вопрос: КАК их использовать в теле функции? --- Конец цитаты --- Это будет не обявление а прототип, дальше потом опишешь эту функцию и назовёшь её параметры как угодно, если ты писал приложение то по идеи должен был слышать об этом. --- Цитата: HardWareMan ---Т.е., ты никогда не программил на VС и всегда программишь на чистом API, описывая окна и его элементы по ходу исполнения программы, да? Не смеши мои тапки. Любая ГУевая программа требует определенного затрата человека-часов на, как ты назвал, "программирование мышкой". --- Конец цитаты --- Так а в visual в этот раз я сразу не прыгал с головой, я пока с консолью хочу доразбираться :) Добавлено позже: Кстати типичный срач c++ VS Delphi воочию, не думал что он доберётся до эму-ленда :) |
| GManiac:
--- Цитата: gepar от 25 Май 2011, 11:26:59 ---Не запускается. --- Конец цитаты --- Шутишь? Это консольное приложение. Из командной строки запусти, увидишь параметры запуска. --- Цитата ---Это будет не обявление а прототип, дальше потом опишешь эту функцию и назовёшь её параметры как угодно, --- Конец цитаты --- Емнип, в объявлении тоже так можно написать. Добавлено позже: Да, только что в VC проверил. Можно создать дефайн функции с параметрами без имён. |
| gepar:
--- Цитата: GManiac ---Да, только что в VC проверил. Можно создать дефайн функции с параметрами без имён. --- Конец цитаты --- Можно и не define ... и что? :) С++ не так сильно ограничивает тебя по этому поводу (по началу после паскаля это раздражает, а потом - наоборот), нужна тебе функция с параметром - на тебе функция с параметром. Вот тебе пример как применить это --- Код: ---void a(int) { cout<<"GMan"; } void a() { cout<<"iac"; } int main () { a(100500); a(); } --- Конец кода --- |
| Mr2:
--- Цитата: GManiac ---Mr2, напиши на сях мои примеры отсюда: --- Конец цитаты --- Я только С++ знаю. :blush: В Delphi даже не вникал. Меня всё устраивает в C++, ну вот только двумерный динамический массив както смутил. ;) |
| gepar:
--- Цитата: GManiac ---Шутишь? Это консольное приложение. Из командной строки запусти, увидишь параметры запуска. --- Конец цитаты --- ... Добавлено позже: --- Цитата: Mr2 ---В Delphi даже не вникал. Меня всё устраивает в C++, ну вот только двумерный динамический массив както смутил. --- Конец цитаты --- Почему? Всё логично ведь и также как и в других языках - создаём массив массивов, главное потом когда будешь удалять свой динам. массив не забыть []. А вообще мне динам. массив понадобился единожды чтобы сдать одну лабу, больше нигде не применял. Добавлено позже: За срачём мой вопрос был не замечен :( Как в дебагере отслеживать состояния вх. и исх. потоков? Я вообще до этого дебагером не пользовался и ожидал что будет что-то вроде workspace матлаба где будет состояние всех переменных, история ввода-вывода, а на деле я получил только возможность следить за переменными в данный момент и изменять их значения на ходу (после изменения символа 'a' в перменной на 'b' моя программа сразу же завершилась почему-то :( ) и... и всё. Что же мне вводить в поле "следить за..." чтобы проследить за потоками подскажите пожалуйста. |
| Mr2:
--- Цитата: gepar ---Почему? --- Конец цитаты --- В начале вот так его создал: --- Код: ---int *pArray pArray =new int[val1][val2]; --- Конец кода --- Когда выдало ошибку, пришлось создавать массив массивов. ;) Теперь при старте программы появилась небольшая пауза, видимо массив массивов создаётся. :? --- Цитата: gepar ---А вообще мне динам. массив понадобился единожды чтобы сдать одну лабу, больше нигде не применял. --- Конец цитаты --- Я делал под нумерацию анимации спрайта. --- Код: ---ani[type][kadr]; --- Конец кода --- |
| gepar:
GManiac,кстати учитывая твою любовь к указателям повторю картинку что я здесь постил после НГ. |
| GManiac:
--- Цитата ---Можно и не define ... и что? --- Конец цитаты --- Под дефайном я имел в виду определение тела функции, в отличие от декларейшна (объявление заголовка). И там, и там можно не давать имя параметру. Вот объясни мне, зачем в функции параметр, который нельзя использовать? --- Цитата: Mr2 от 25 Май 2011, 12:27:03 ---Я только С++ знаю. :blush: В Delphi даже не вникал. Меня всё устраивает в C++, ну вот только двумерный динамический массив както смутил. ;) --- Конец цитаты --- А что там сложного в моих примерах? И двумерных дин. массивов там нету. Если про вторую функцию sum, то вызовы: sum( dyn_mas ) - суммирование всех элементов динамического массива, с индекса 0 до его конца sum( stat_mas ) - суммирование всех элементов статического массива, например, с 1-го по 5-й, если он был объявлен как array[1..5] sum( [ 2, 3, 4, 5 ] ) - суммирование фактически переданных в вызов чисел: 2 + 3 + 4 + 5. И всё это одной простенькой функцией. Или для первой функции sum: sum( a ) - сложить первые два числа в массива a sum( a[ 5 ] ) - сложить два числа, начиная с a[ 5 ], то есть a[ 5 ] + a[ 6 ] И никаких закорючек. А вот нашёл интересные посты )))))) http://www.emu-land.net/forum/index.php/topic,49888.msg694737.html#msg694737 http://www.emu-land.net/forum/index.php/topic,49888.msg694732.html#msg694732 http://www.emu-land.net/forum/index.php/topic,49888.msg694515.html#msg694515 http://www.emu-land.net/forum/index.php/topic,49888.msg705059.html#msg705059 |
| Навигация |
| Главная страница сообщений |
| Следующая страница |
| Предыдущая страница |