|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
27.03.2009, 13:06 | #1 |
Регистрация: 02.08.2008
Сообщений: 9
|
Переменный размер массива
Одномерный массив, размер которого в процессе программы увеличивается(возрастает на 1 за раз, и новому члену тут же присваивается значение). Как такое реализовать ?
|
27.03.2009, 13:10 | #2 |
Software Engineer
Участник клуба
Регистрация: 07.04.2007
Сообщений: 1,618
|
Использовать функцию calloc()
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
|
27.03.2009, 13:22 | #3 |
Форумчанин
Регистрация: 24.03.2009
Сообщений: 215
|
int *massiv = (int*)malloc(sizeof(int)*n); // n - число элементов (создание)
int *massiv = (int*)realloc(massiv, sizeof(int)*n); // n - число элементов (изменение размера) free(massiv); // очищение памяти, выделенной под массив
wyvern@localhost:~$ sudo emerge --unmerge world
Последний раз редактировалось wyvern; 27.03.2009 в 15:10. |
27.03.2009, 13:28 | #4 |
Регистрация: 02.08.2008
Сообщений: 9
|
Епт, гениально! ) Я этих функций просто не знал. Спасибо =)
|
27.03.2009, 14:57 | #5 |
Регистрация: 02.08.2008
Сообщений: 9
|
Ещё вопрос:
Вообще, мне необходимо сделать массив строк. И иметь возможность редактировать отдельные символы в этом массиве + массив должен быть переменным, чтобы в процессе изменять свой размер. Я последовал вашему совету: char **massiv = (char**)calloc (5,sizeof(char*)); *(massiv + 2) = "String 3";// инициализирую 3-ю строку printf("\n%s",*(massiv + 2)); // работает, выводит "String 3" А вот получить доступ к отдельному символу строки не получается ... как это сделать? |
27.03.2009, 15:03 | #6 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,085
|
massiv[2][3] - 4-й символ 3-й строки
|
27.03.2009, 15:03 | #7 |
Форумчанин
Регистрация: 24.03.2009
Сообщений: 215
|
будь проще) незачем прописывать эти ужасные смещения...
Код:
wyvern@localhost:~$ sudo emerge --unmerge world
|
27.03.2009, 15:05 | #8 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,085
|
И вообще, если пишите на С++, то используйте какой-нибудь std::vector в качестве динамического массива и std::string в качестве строк и не заморачивайтесь с выделением памяти
|
27.03.2009, 15:07 | #9 |
Форумчанин
Регистрация: 24.03.2009
Сообщений: 215
|
все-таки такие вещи надо знать.
нынче многие начинают учить сразу плюсы без чистых Сей... в итоге получаются полуфабрикаты..
wyvern@localhost:~$ sudo emerge --unmerge world
|
27.03.2009, 15:15 | #10 |
Регистрация: 02.08.2008
Сообщений: 9
|
Я не могу всё равно изменить отдельновзятый символ
char **massiv = (char**)calloc(5, sizeof(char*)); massiv[1] = "LOL"; // Ок massiv[1][2] = 'X'; // при проверке ошибку не находит, ошибка вылазит при дэбаге free(massiv); Unhandled exception at 0x004133e0 in qwerty2.exe: 0xC0000005: Access violation writing location 0x004156aa. |
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Напомните как задать размер динамического массива | Arassir | Помощь студентам | 4 | 08.03.2009 13:02 |
размер массива | nosuchathing | Общие вопросы C/C++ | 6 | 15.01.2009 11:40 |
максимальный размер массива в 32-битной оси | Adamant | Свободное общение | 5 | 03.12.2008 21:14 |
Размер массива в Delphi | simple_Pro | Помощь студентам | 2 | 11.05.2008 09:15 |
Как узнать размер массива | мандарин | Общие вопросы Delphi | 2 | 30.05.2007 19:18 |