Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменить размер массива 
V
    Опции темы
Alca
Дата 25.3.2008, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Изменить размер массива?
Код

char cText[8192] = ""; 
unsigned long int ulTextLen = sizeof(cText);  
ulTextLen = 100;
//необходимо уменьшить размер массива 
//т.е. cText[ulTextLen] - размер раввен 100


Это сообщение отредактировал(а) Alca - 25.3.2008, 14:17


--------------------
PM WWW ICQ Skype Jabber   Вверх
korian
Дата 25.3.2008, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



размер статического массива изменить нельзя
или я не понял вопроса
PM   Вверх
Alca
Дата 25.3.2008, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



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

Это сообщение отредактировал(а) Alca - 25.3.2008, 14:46


--------------------
PM WWW ICQ Skype Jabber   Вверх
Lazin
Дата 25.3.2008, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



Цитата(Alca @  25.3.2008,  14:30 Найти цитируемый пост)
а динамического?

можно, поискав по форуму на тему - std::vector или realloc
PM MAIL Skype GTalk   Вверх
Alca
Дата 25.3.2008, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



изменить размер массива

Проблема может возникнуть только тогда, когда понадобится изменить размер массива: 
в данном случае это возможно только созданием нового массива и копированием нужных элементов в новый массив: 

Код

 const int SIZE = 10;
 SRec *p = new SRec[SIZE];
 //увеличим размер массива на 20 елементов
 {
  SRec *p1= new SRec[SIZE+20];
  for(int i=0;i&ltSIZE;i++)  //для простых типов лучше использовать memcpy
   p1[i] = p[i];
  delete [] p; //удалим старый
  p = p1; //присвоим указателю другой адрес
 }
 ...
 delete [] p; //освободим память


Как правильно изменить размер массива, выделяемого оператором new[]


Есть ли вообще такая возможность.
Такой возможности нет.

Правильно делается так:
1. выделяется новый участок памяти нужного размера при помощи new
2. копируется туды содержимое старого массива
3. delete[] старый массив
4. указатель старого массива = указатель нового массива.

Код

#include <string.h>
int main() {
int arr_sz = 100;
int *array = new int [arr_sz];
{
int new_arr_sz = 1000;
int *new_array = new int [new_arr_sz];
memcpy(new_array, array, sizeof(int) * arr_sz);
delete [] array;
array = new_array;
arr_sz = new_arr_sz;
}
return 0;
}




--------------------
PM WWW ICQ Skype Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


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

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


 




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


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

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