![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Syberex |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 15.9.2006 Где: Украина Репутация: нет Всего: нет |
в общем есть такое
как мне соединить их вместе? чтоб было hhhhhhhhhjjjjjjjj, т.е соединить и данные занести либо в char[ i],т.е заранее определённого рамера , либо динамически new x[y]; как? --------------------
whole power in artificial intelligences |
|||
|
||||
Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 4 Всего: 67 |
-------------------- СУВ, Partizan. |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
мдя. Ну несколько раз уже было:
А вообще не 50 и 80, а константы нужно указывать ![]() |
|||
|
||||
Syberex |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 15.9.2006 Где: Украина Репутация: нет Всего: нет |
супер, всё работает, сенкс
![]() --------------------
whole power in artificial intelligences |
|||
|
||||
JAnty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 366 Регистрация: 6.12.2004 Где: Москва Репутация: 1 Всего: 2 |
c=hhhhhhhhhjjjjjjjj -------------------- |
|||
|
||||
Partizan |
|
||||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 4 Всего: 67 |
неправильный ваш код... ибо вполне вероятно что в итоге такой операции мы получим переполнение в char a[50] -------------------- СУВ, Partizan. |
||||
|
|||||
JAnty |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 366 Регистрация: 6.12.2004 Где: Москва Репутация: 1 Всего: 2 |
А ведь правдо. ![]() Добавлено через 6 минут и 22 секунды Проверил так:
printf выдал hhjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj Ничо не переполнилось. ![]() -------------------- |
||||
|
|||||
Goryachev |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 23.2.2005 Где: Израиль Репутация: нет Всего: нет |
JAnty, в этом случае может нет side effects , но будет случай, в котором прога вылетит.
|
|||
|
||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 15 Всего: 88 |
В данном случае, по-моему, вообще ничего не нужно указывать, равно как и заморачиваться с динамическим массивом. Просто нужно объявить массив размером a + b и всё. Так, например:
Ну, или что-то в этом роде. ![]() -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
||||
|
||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 15 Всего: 88 |
JAnty, уже здесь ты вышел за пределы массива, а твой компилятор об этом даже не догадался
![]() -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
apook |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 794 Регистрация: 12.7.2006 Репутация: 9 Всего: 23 |
никто не вышел ![]() -------------------- Мои руки из дуба, голова из свинца ну и пусть ... |
||||
|
|||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 15 Всего: 88 |
-------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
JAnty |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 366 Регистрация: 6.12.2004 Где: Москва Репутация: 1 Всего: 2 |
Теоретически. Конец строки добавляется сам после массива. В Билдере написал:
![]() Даже варнинга небыло. ![]() -------------------- |
||||
|
|||||
Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 4 Всего: 67 |
JAnty, тебе просто повезло)
-------------------- СУВ, Partizan. |
|||
|
||||
JAnty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 366 Регистрация: 6.12.2004 Где: Москва Репутация: 1 Всего: 2 |
10 раз откомпилил, 10 повезло. Вот она удача ->
![]() -------------------- |
|||
|
||||
Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 4 Всего: 67 |
тебе повезло что программа не вылетела с access violation при попытке записи за границы массива....
-------------------- СУВ, Partizan. |
|||
|
||||
Kuvaldis |
|
|||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: 11 Всего: 61 |
JAnty,
Запусти прогу не из IDE, а из проводника. Думаю, что теперь увидишь разницу (скорее всего, ты еще и debug версию компилишь) -------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
|||
|
||||
apook |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 794 Регистрация: 12.7.2006 Репутация: 9 Всего: 23 |
a[2]='\0'; все правильно ![]() Dov я не хулиганю эта обьявление правильное на мой взгляд
чему равна длина этого массива? Только не надо говорить про плохие компиляторы Это сообщение отредактировал(а) apook - 29.3.2007, 17:51 -------------------- Мои руки из дуба, голова из свинца ну и пусть ... |
||||
|
|||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
выход за границы массива. ты имеешь доступ к a[0] и a[1]. У тебя размер - 2 элемента, а не 3. |
|||
|
||||
JAnty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 366 Регистрация: 6.12.2004 Где: Москва Репутация: 1 Всего: 2 |
char a[2];
a[0]='a'; a[1]='q'; a[2]='w'; a[3]='e'; a[4]='t'; Forma->Caption=a;
Пожилание учол, откомпилил финальную в ехе и запустил на другом компе, и всё mrOk; ![]() -------------------- |
|||
|
||||
Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 4 Всего: 67 |
ггг ) попробуй текст в 10 Мбайт дозаписать) может тогда наконец вылетит)
-------------------- СУВ, Partizan. |
|||
|
||||
vinter |
|
||||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
везение и больше ничего, даже скорее невезение, потомучто когданить из-за этого на такую проблему можешь попасть.. почитай про устройство памяти и про определение переменных и про то как все это хранится, и nujulf поймешь в чем ты неправ
так тут как раз два элемента будет \0 и \0. \ - экранирующий символ что правильно, то что ты обьявил массив из 2 элементов, а обращаешься к третьему? |
||||
|
|||||
JAnty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 366 Регистрация: 6.12.2004 Где: Москва Репутация: 1 Всего: 2 |
Я же не собираюсь так и понатуре делать, память просто терпит, винда допускает оплошности, но суть бредовая, согласен. По сути дело оно как, в памяти пишутся символы по порядку и потом \0 . потом читаем до \0, в указателе мы же не указываем длинну, а a[2]='\0' запишет символ \0 после символа a[1] в памяти. ![]() -------------------- |
|||
|
||||
vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
но так не должно позволять делать! хм.. у меня подозрение что здесь замешан борланд.. Добавлено через 2 минуты и 16 секунд ![]() ![]() |
|||
|
||||
apook |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 794 Регистрация: 12.7.2006 Репутация: 9 Всего: 23 |
char str[ 2 ]="\0"; что здесь опасного просто строка длинной 0, зачем экранирование экранируется '\n'
но он же там будет но кстати плохо однако он затереться может (а может и нет ![]() -------------------- Мои руки из дуба, голова из свинца ну и пусть ... |
||||
|
|||||
JAnty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 366 Регистрация: 6.12.2004 Где: Москва Репутация: 1 Всего: 2 |
Там так называемая "защита от дурака" Именно так делается изменение массивов и т.д. в стандартных библиотеках. А теперь это доступно пользователю в ручную. Превратим a[2] в a[3];
С этим надо быть осторожным. А лучше преобразовывать стандартными методами, которые делаются именно таким способом, но которые проверены годами и стандартом С. ИМХО Добавлено через 5 минут и 35 секунд Шалости с ОЗУ. ![]() Это сообщение отредактировал(а) JAnty - 29.3.2007, 18:46 -------------------- |
|||
|
||||
vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
а если сразу после массива идет нужная информация?? например другая строка, к чему тогда такие шалости могут привести? это какими это? лучше динамически выделять, и не иметь проблем с памятью.. |
|||
|
||||
JAnty |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 366 Регистрация: 6.12.2004 Где: Москва Репутация: 1 Всего: 2 |
Тогда разумеется это чревато полным пипецом. ![]() Добавлено через 7 минут и 59 секунд
А тогда кагже работает указатель на строку, адрес не меняется, но строка растёт? а? -------------------- |
||||
|
|||||
apook |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 794 Регистрация: 12.7.2006 Репутация: 9 Всего: 23 |
Это сообщение отредактировал(а) apook - 29.3.2007, 20:02 -------------------- Мои руки из дуба, голова из свинца ну и пусть ... |
|||
|
||||
vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
||||
|
||||
JAnty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 366 Регистрация: 6.12.2004 Где: Москва Репутация: 1 Всего: 2 |
Адрес не маняется. Допустим у нас в строке 5 символов (5 ячеек в памяти + \0) а с 7 ячейки другая инфа, а мы взять, да изменили нашу строку до 35 символов, как оно сработает? -------------------- |
|||
|
||||
apook |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 794 Регистрация: 12.7.2006 Репутация: 9 Всего: 23 |
Что-то навеяло, к вопросу о нуль символах и тем что за ним а вообще это способ использовать память которая зря пустует
и как-же ты собрался менять размер статического массива? с динамическим то это не так просто Это сообщение отредактировал(а) apook - 29.3.2007, 19:39 -------------------- Мои руки из дуба, голова из свинца ну и пусть ... |
||||
|
|||||
vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
неопределено не надо так, зря ниче не пустует, а вот гемморой всегда на стреме ![]() |
|||
|
||||
apook |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 794 Регистрация: 12.7.2006 Репутация: 9 Всего: 23 |
Все отлично память пустует зря ведь она отведена под массив из 50 символов тогда как занято 9 остальная allocate, да и гемороя не так много разве что маленько ![]() -------------------- Мои руки из дуба, голова из свинца ну и пусть ... |
|||
|
||||
Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 4 Всего: 67 |
=) ну вот забил ты в большом проекте эту "пустующую память" важными данными...
и через какоето время благополучно забыл об этом) и думаешь...хммм...а чего она пустует...дайка я туда запишу чонить) и пожалуйста) вот он и геморрой))) геморройчик) -------------------- СУВ, Partizan. |
|||
|
||||
JAnty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 366 Регистрация: 6.12.2004 Где: Москва Репутация: 1 Всего: 2 |
Так значит можно. А я собрался менять *стр /*не массив*/, она же увеличивается не смотря на то, чо там дальше в памяти. -------------------- |
|||
|
||||
apook |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 794 Регистрация: 12.7.2006 Репутация: 9 Всего: 23 |
Partizan
Ну вот выделил ты динамическую память через new забил ее важными данными забыл об этом и удалил через delete только не спрашивай зачем забывать -------------------- Мои руки из дуба, голова из свинца ну и пусть ... |
|||
|
||||
Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 4 Всего: 67 |
apook, причём тут динамическая память) речь ведь шла о предложенном тобой методе использования "простаивающей" памяти)
-------------------- СУВ, Partizan. |
|||
|
||||
zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
apook, JAnty, на практике, самое ценное в проге, это даные пользователя, а уж потом экономия оперативки и прочее.
С вашим подходом вы можете не только программу уронить, но и (что в большинстве случаев хуже) эти данные подпортить, и неизвестно, когда это всплывет, и как весело потом будет искать ошибку ![]() Можно представить, как в какой нибудь проге расчета зарплаты, "случайно" изменится повышающий коэффициент в меньшую сторону, пожалуй это будет справедливо, только если зарплата в этот момент будет рассчитываться для создателя этой программы ![]() Вот вам примерчик использования "пустующей памяти":
хм... мой пример компилится безо всяких замечаний. |
|||
|
||||
apook |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 794 Регистрация: 12.7.2006 Репутация: 9 Всего: 23 |
Что за такой не хороший подход, я ведь не настаиваю что это есть способ которым желательно пользоваться, это вообще не способ я просто к слову сказал просто показать что такое возможно точнее если я уверен что элеметы массива существуют то обращаться к ним необычно на первый взгляд наример str[ -20 ] как я показал в примере разумеется в ответствеенных участках прогр лучше пользоваться стандартными методами ну разве-что иногда... ![]() -------------------- Мои руки из дуба, голова из свинца ну и пусть ... |
|||
|
||||
vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
действительно...странно, а в том примере, у меня писало overflow |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |