Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как соединить char x[j] + char y[i] ??? -как эффективно-- 
V
    Опции темы
Syberex
Дата 29.3.2007, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 15.9.2006
Где: Украина

Репутация: нет
Всего: нет



в общем есть такое 

Код

char[50]="hhhhhhhhh";
char[80]="jjjjjjjj";


как мне соединить их вместе? чтоб было hhhhhhhhhjjjjjjjj, т.е соединить и данные занести либо в char[ i],т.е заранее определённого рамера , либо динамически new x[y];

как? 
--------------------
whole power in artificial intelligences
PM MAIL ICQ   Вверх
Partizan
Дата 29.3.2007, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 4
Всего: 67



Код

strcat()



--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
JackYF
Дата 29.3.2007, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



мдя. Ну несколько раз уже было:

Код

char a[50]="hhhhhhhhh";
char b[80]="jjjjjjjj";

char* с = new char[50+80+1];
strcpy(c, a);
strcat(c, b);


А вообще не 50 и 80, а константы нужно указывать smile.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Syberex
Дата 29.3.2007, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 15.9.2006
Где: Украина

Репутация: нет
Всего: нет



супер, всё работает, сенкс  smile 
--------------------
whole power in artificial intelligences
PM MAIL ICQ   Вверх
JAnty
  Дата 29.3.2007, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 366
Регистрация: 6.12.2004
Где: Москва

Репутация: 1
Всего: 2



Код

char a[50]="hhhhhhhhh";
char b[80]="jjjjjjjj";
char *c;
c=strcat(a,b);


c=hhhhhhhhhjjjjjjjj


--------------------
Русский справочник по WinAPI

Возможно всё, что возможно вообразить! Это и значит быть гением как я!
PM MAIL   Вверх
Partizan
Дата 29.3.2007, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 4
Всего: 67



Цитата(JAnty @ 29.3.2007,  15:11)
Код

char a[50]="hhhhhhhhh";
char b[80]="jjjjjjjj";
char *c;
c=strcat(a,b);


c=hhhhhhhhhjjjjjjjj

неправильный ваш код...
ибо вполне вероятно что в итоге такой операции мы получим переполнение в char a[50]


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
JAnty
  Дата 29.3.2007, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 366
Регистрация: 6.12.2004
Где: Москва

Репутация: 1
Всего: 2



Цитата(Partizan @  29.3.2007,  15:16 Найти цитируемый пост)
ибо вполне вероятно что в итоге такой операции мы получим переполнение в char a[50] 


А ведь правдо.  smile

Добавлено через 6 минут и 22 секунды
Проверил так:
Код

char a[2]="hh";
char b[80]="jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj";
char *c;
c=strcat(a,b);


printf выдал hhjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj

Ничо не переполнилось.  smile 


--------------------
Русский справочник по WinAPI

Возможно всё, что возможно вообразить! Это и значит быть гением как я!
PM MAIL   Вверх
Goryachev
Дата 29.3.2007, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 23.2.2005
Где: Израиль

Репутация: нет
Всего: нет



JAnty, в этом случае может нет side effects , но будет случай, в котором прога вылетит.
PM MAIL   Вверх
Dov
Дата 29.3.2007, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 15
Всего: 88



Цитата(JackYF @  29.3.2007,  14:02 Найти цитируемый пост)
А вообще не 50 и 80, а константы нужно указывать 

В данном случае, по-моему, вообще ничего не нужно  указывать, равно как и заморачиваться с динамическим массивом. Просто нужно объявить массив размером a + b и всё.
Так, например:
Код

char a[]="hhhhhhhhh";
char b[]="jjjjjjjj";
char с[sizeof(a) + sizeof(b)];
strcat(strcpy(c, a), b);
 
Ну, или что-то в этом роде.  smile 



--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Fazil6
Дата 29.3.2007, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата(JAnty @  29.3.2007,  15:20 Найти цитируемый пост)
Ничо не переполнилось. 

 smile 
и на основании чего ты сделал такой вывод?
PM MAIL   Вверх
Dov
Дата 29.3.2007, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 15
Всего: 88



JAnty, уже здесь ты вышел за пределы массива, а твой компилятор об этом даже не догадался  smile 
Цитата(JAnty @  29.3.2007,  14:20 Найти цитируемый пост)
char a[2]="hh";




--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
apook
Дата 29.3.2007, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 794
Регистрация: 12.7.2006

Репутация: 9
Всего: 23



Цитата

JAnty, уже здесь ты вышел за пределы массива, а твой компилятор об этом даже не догадался
Цитата

char a[2]="hh";
   

никто не вышел  smile 



--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
Dov
Дата 29.3.2007, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 15
Всего: 88



Цитата(apook @  29.3.2007,  16:13 Найти цитируемый пост)
никто не вышел   


apook,  smile 


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
JAnty
  Дата 29.3.2007, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 366
Регистрация: 6.12.2004
Где: Москва

Репутация: 1
Всего: 2



Цитата(Dov @  29.3.2007,  17:05 Найти цитируемый пост)
JAnty, уже здесь ты вышел за пределы массива, а твой компилятор об этом даже не догадался   


Теоретически. Конец строки добавляется сам после массива.
В Билдере написал:
Код

 char a[2];
 a[0]='q';
 a[1]='w';
 a[2]='e';
 a[3]='r';
 Form1->Caption=a;

 smile 
Даже варнинга небыло. smile  (Непешите так проги.)


--------------------
Русский справочник по WinAPI

Возможно всё, что возможно вообразить! Это и значит быть гением как я!
PM MAIL   Вверх
Partizan
Дата 29.3.2007, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 4
Всего: 67



JAnty, тебе просто повезло)


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
JAnty
  Дата 29.3.2007, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 366
Регистрация: 6.12.2004
Где: Москва

Репутация: 1
Всего: 2



10 раз откомпилил, 10 повезло. Вот она удача -> smile 


--------------------
Русский справочник по WinAPI

Возможно всё, что возможно вообразить! Это и значит быть гением как я!
PM MAIL   Вверх
Partizan
Дата 29.3.2007, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 4
Всего: 67



тебе повезло что программа не вылетела с access violation при попытке записи за границы массива....


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Kuvaldis
Дата 29.3.2007, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


механик-вредитель
***


Профиль
Группа: Участник Клуба
Сообщений: 1189
Регистрация: 16.6.2006
Где: Минск

Репутация: 11
Всего: 61



JAnty
Запусти прогу не из IDE, а из проводника. Думаю, что теперь увидишь разницу (скорее всего, ты еще и debug версию компилишь)


--------------------
Помни - когда ты спишь, враг не дремлет
Спи чаще и дольше, изматывай врага бессоницей
PM MAIL ICQ   Вверх
apook
Дата 29.3.2007, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 794
Регистрация: 12.7.2006

Репутация: 9
Всего: 23



Код

char a[2]="hh";

a[2]='\0'; все правильно  smile


Dov я не хулиганю эта обьявление правильное на мой взгляд
Код

char a[2]="\0";

чему равна длина этого массива? Только не надо говорить про плохие компиляторы




Это сообщение отредактировал(а) apook - 29.3.2007, 17:51


--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
JackYF
Дата 29.3.2007, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(apook @  29.3.2007,  17:45 Найти цитируемый пост)
a[2]='\0'; все правильно  smile


выход за границы массива. ты имеешь доступ к a[0] и a[1]. У тебя размер - 2 элемента, а не 3.



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
JAnty
  Дата 29.3.2007, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 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;

Цитата(Kuvaldis @  29.3.2007,  17:45 Найти цитируемый пост)
Запусти прогу не из IDE, а из проводника. Думаю, что теперь увидишь разницу (скорее всего, ты еще и debug версию компилишь) 


Пожилание учол, откомпилил финальную в ехе и запустил на другом компе, и всё mrOk;  smile 


--------------------
Русский справочник по WinAPI

Возможно всё, что возможно вообразить! Это и значит быть гением как я!
PM MAIL   Вверх
Partizan
Дата 29.3.2007, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 4
Всего: 67



ггг ) попробуй текст в 10 Мбайт дозаписать) может тогда наконец вылетит)


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
vinter
Дата 29.3.2007, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Цитата(JAnty @  29.3.2007,  18:03 Найти цитируемый пост)
Пожилание учол, откомпилил финальную в ехе и запустил на другом компе, и всё mrOk; 

везение и больше ничего, даже скорее невезение, потомучто когданить из-за этого на такую проблему можешь попасть..
почитай про устройство памяти и про определение переменных и про то как все это хранится, и nujulf поймешь в чем ты неправ

Цитата(apook @  29.3.2007,  17:45 Найти цитируемый пост)
чему равна длина этого массива? Только не надо говорить про плохие компиляторы

так тут как раз два элемента будет \0 и \0. \ - экранирующий символ 
Цитата(apook @  29.3.2007,  17:45 Найти цитируемый пост)
a[2]='\0'; все правильно  

что правильно, то что ты обьявил массив из 2 элементов, а обращаешься к третьему?



--------------------
Мой блог
PM MAIL WWW   Вверх
JAnty
  Дата 29.3.2007, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 366
Регистрация: 6.12.2004
Где: Москва

Репутация: 1
Всего: 2



Цитата(vinter @  29.3.2007,  18:14 Найти цитируемый пост)
везение и больше ничего, даже скорее невезение, потомучто когданить из-за этого на такую проблему можешь попасть..


Я же не собираюсь так и понатуре делать, память просто терпит, винда допускает оплошности, но суть бредовая, согласен.
По сути дело оно как, в памяти пишутся символы по порядку и потом \0 . потом читаем до \0, в указателе мы же не указываем длинну, а a[2]='\0' запишет символ \0 после символа a[1] в памяти.
 smile ИМХО


--------------------
Русский справочник по WinAPI

Возможно всё, что возможно вообразить! Это и значит быть гением как я!
PM MAIL   Вверх
vinter
Дата 29.3.2007, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Цитата
По сути дело оно как, в памяти пишутся символы по порядку и потом \0 . потом читаем до \0, в указателе мы же не указываем длинну, а a[2]='\0' запишет символ \0 после символа a[1] в памяти.


но так не должно позволять делать!
хм.. у меня подозрение что здесь замешан борланд..

Добавлено через 2 минуты и 16 секунд
 smile респект 2003 студии, она не дала такое скомпилить smile 


--------------------
Мой блог
PM MAIL WWW   Вверх
apook
Дата 29.3.2007, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 794
Регистрация: 12.7.2006

Репутация: 9
Всего: 23



Цитата

но так не должно позволять делать!

char str[ 2 ]="\0";
что здесь опасного просто строка длинной 0, зачем экранирование
экранируется '\n'


Цитата

ты обьявил массив из 2 элементов, а обращаешься к третьему?

но он же там будет но кстати плохо однако он затереться может
(а может и нет smile чет я не уверен)




--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
JAnty
  Дата 29.3.2007, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 366
Регистрация: 6.12.2004
Где: Москва

Репутация: 1
Всего: 2



Цитата(vinter @  29.3.2007,  18:28 Найти цитируемый пост)
респект 2003 студии, она не дала такое скомпилить   

Там так называемая "защита от дурака"
Именно так делается изменение массивов и т.д. в стандартных библиотеках.
А теперь это доступно пользователю в ручную. 
Превратим a[2] в a[3];
Код

char a[2];
a[2]=' ';    // стёрли \0 и записали ' '
a[3]='\0';    // тем самым добавили 1 символ; 

С этим надо быть осторожным. А лучше преобразовывать стандартными методами, которые делаются именно таким способом, но которые проверены годами и стандартом С.
ИМХО

Добавлено через 5 минут и 35 секунд
Шалости с ОЗУ. smile 

Это сообщение отредактировал(а) JAnty - 29.3.2007, 18:46


--------------------
Русский справочник по WinAPI

Возможно всё, что возможно вообразить! Это и значит быть гением как я!
PM MAIL   Вверх
vinter
Дата 29.3.2007, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Цитата(JAnty @  29.3.2007,  18:45 Найти цитируемый пост)
Шалости с ОЗУ. 

а если сразу после массива идет нужная информация?? например другая строка, к чему тогда такие шалости могут привести?
Цитата(JAnty @  29.3.2007,  18:45 Найти цитируемый пост)
А лучше преобразовывать стандартными методами

это какими это? лучше динамически выделять, и не иметь проблем с памятью..


--------------------
Мой блог
PM MAIL WWW   Вверх
JAnty
Дата 29.3.2007, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 366
Регистрация: 6.12.2004
Где: Москва

Репутация: 1
Всего: 2



Цитата(vinter @  29.3.2007,  18:53 Найти цитируемый пост)
а если сразу после массива идет нужная информация?? например другая строка, к чему тогда такие шалости могут привести?


Тогда разумеется это чревато полным пипецом. smile

Добавлено через 7 минут и 59 секунд
Цитата(vinter @  29.3.2007,  18:53 Найти цитируемый пост)
а если сразу после массива идет нужная информация?? например другая строка, к чему тогда такие шалости могут привести?


А тогда кагже работает указатель на строку, адрес не меняется, но строка растёт? а?


--------------------
Русский справочник по WinAPI

Возможно всё, что возможно вообразить! Это и значит быть гением как я!
PM MAIL   Вверх
apook
Дата 29.3.2007, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 794
Регистрация: 12.7.2006

Репутация: 9
Всего: 23



Код

char str[ 50 ]=" World!", *s;

str[ 45 ]='H';
str[ 46 ]='e';
str[ 47 ]='l';
str[ 48 ]='l';
str[ 49 ]='o';

s=&str[ 45 ];
// указатель на строку str
cout << s[ 0 ];
cout << s[ 1 ];
cout << s[ 2 ];
cout << s[ 3 ];
cout << s[ 4 ];


cout << s[ -45 ]; 
cout << s[ -44 ];
cout << s[ -43 ];
cout << s[ -42 ];
cout << s[ -41 ];
cout << s[ -40 ];
cout << s[ -39 ];


Это сообщение отредактировал(а) apook - 29.3.2007, 20:02


--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
vinter
Дата 29.3.2007, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Цитата(JAnty @  29.3.2007,  18:59 Найти цитируемый пост)
А тогда кагже работает указатель на строку, адрес не меняется, но строка растёт? а?

указатель это всего лишь адрес, а ф-ии вывода выводят все начиная с того на что указывает указатель, до '\0'
apook , это ты к чему??


--------------------
Мой блог
PM MAIL WWW   Вверх
JAnty
  Дата 29.3.2007, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 366
Регистрация: 6.12.2004
Где: Москва

Репутация: 1
Всего: 2



Цитата(vinter @  29.3.2007,  19:20 Найти цитируемый пост)
указатель это всего лишь адрес, а ф-ии вывода выводят все начиная с того на что указывает указатель, до '\0'


Адрес не маняется. Допустим у нас в строке 5 символов (5 ячеек в памяти + \0) а с 7 ячейки другая инфа, а мы взять, да изменили нашу строку до 35 символов, как оно сработает?


--------------------
Русский справочник по WinAPI

Возможно всё, что возможно вообразить! Это и значит быть гением как я!
PM MAIL   Вверх
apook
Дата 29.3.2007, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 794
Регистрация: 12.7.2006

Репутация: 9
Всего: 23



Цитата

apook , это ты к чему??

Что-то навеяло, к вопросу о нуль символах и тем что за ним
а вообще это способ использовать память которая зря пустует 

Цитата

да изменили нашу строку до 35 символов, как оно сработает?

и как-же ты собрался менять размер статического массива?
с динамическим то это не так просто

Это сообщение отредактировал(а) apook - 29.3.2007, 19:39


--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
vinter
Дата 29.3.2007, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Цитата(JAnty @  29.3.2007,  19:36 Найти цитируемый пост)
как оно сработает?

неопределено
Цитата(apook @  29.3.2007,  19:36 Найти цитируемый пост)
а вообще это способ использовать память которая зря пустует 

не надо так, зря ниче не пустует, а вот гемморой всегда на стремеsmile


--------------------
Мой блог
PM MAIL WWW   Вверх
apook
Дата 29.3.2007, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 794
Регистрация: 12.7.2006

Репутация: 9
Всего: 23



Цитата

не надо так, зря ниче не пустует, а вот гемморой всегда на стреме

Все отлично память пустует зря ведь она отведена под массив
из 50 символов тогда как занято 9 остальная allocate, да и гемороя
не так много разве что маленько  smile 


--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
Partizan
Дата 29.3.2007, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 4
Всего: 67



=) ну вот забил ты в большом проекте эту "пустующую память" важными данными...
и через какоето время благополучно забыл об этом)
и думаешь...хммм...а чего она пустует...дайка я туда запишу чонить)

и пожалуйста) вот он и геморрой))) геморройчик)


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
JAnty
  Дата 29.3.2007, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 366
Регистрация: 6.12.2004
Где: Москва

Репутация: 1
Всего: 2



Цитата(apook @  29.3.2007,  19:36 Найти цитируемый пост)
и как-же ты собрался менять размер статического массива?
с динамическим то это не так просто

Так значит можно.

А я собрался менять *стр /*не массив*/, она же увеличивается не смотря на то, чо там дальше в памяти.


--------------------
Русский справочник по WinAPI

Возможно всё, что возможно вообразить! Это и значит быть гением как я!
PM MAIL   Вверх
apook
Дата 29.3.2007, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 794
Регистрация: 12.7.2006

Репутация: 9
Всего: 23



Partizan 
Ну вот выделил ты динамическую память через new
забил ее важными данными забыл об этом и удалил через delete

только не спрашивай зачем забывать


--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
Partizan
Дата 29.3.2007, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 4
Всего: 67



apook, причём тут динамическая память) речь ведь шла о предложенном тобой методе использования "простаивающей" памяти)


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
zkv
Дата 30.3.2007, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



apookJAnty, на практике, самое ценное в проге, это даные пользователя, а уж потом экономия оперативки и прочее. 
С вашим подходом вы можете не только программу уронить, но и (что в большинстве случаев хуже) эти данные подпортить, и неизвестно, когда это всплывет, и как весело потом будет искать ошибку  smile 
Можно представить, как в какой нибудь проге расчета зарплаты, "случайно" изменится повышающий коэффициент в меньшую сторону, пожалуй это будет справедливо, только если зарплата в этот момент будет рассчитываться для создателя этой программы  smile  

Вот вам примерчик использования "пустующей памяти":
Код

#include <iostream>

struct TESTMEMORY
{
    char str[31];
    char c;
};

int main()
{
    TESTMEMORY tm;
    tm.c = '!';
    tm.str[31] = '?';
    std::cout<<"\ntm.c = "<<tm.c<<"\n";
    std::cin.get();
}  

Цитата(vinter @  29.3.2007,  18:28 Найти цитируемый пост)
респект 2003 студии, она не дала такое скомпилить

хм... мой пример компилится безо всяких замечаний.
PM MAIL   Вверх
apook
Дата 30.3.2007, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 794
Регистрация: 12.7.2006

Репутация: 9
Всего: 23



Цитата

С вашим подходом

Что за такой не хороший подход, я ведь не настаиваю что это
есть способ которым желательно пользоваться, это вообще не
способ я просто к слову сказал просто показать что такое возможно
точнее если я уверен что элеметы массива существуют то обращаться
к ним необычно на первый взгляд наример str[ -20 ] как я показал
в примере разумеется в ответствеенных участках прогр лучше
пользоваться стандартными методами

ну разве-что иногда...  smile 


--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
vinter
Дата 30.3.2007, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Цитата(zkv @  30.3.2007,  18:27 Найти цитируемый пост)
хм... мой пример компилится безо всяких замечаний.

действительно...странно, а в том примере, у меня писало overflow


--------------------
Мой блог
PM MAIL WWW   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1449 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.