Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.03.2012, 16:18   #1
геннадий522
Пользователь
 
Регистрация: 16.12.2011
Сообщений: 20
По умолчанию динамический массив.

Объясните пожалуйста как происходит добавление памяти в цифрах? несколько иттераций?
Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
char *str = (char*)malloc(sizeof(char) * 1), ch; 
size_t i = 0, cnt = 1; 
while( (ch = getchar()) != '\n') 
{
str[i++] = ch; 
str = (char*)realloc(str, sizeof(char) + cnt++); 

}
str[ i ] = '\0'; 
puts(str); 
printf("Len = %d", strlen(str)); 
return 0; // 
}
Как в общем работает этот цикл?
геннадий522 вне форума Ответить с цитированием
Старый 12.03.2012, 16:50   #2
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Вначале выделяется блок памяти размером в один байт.
Количество итераций равно количеству символов введенных с консоли.
Последнему байту в выделенном блоке присваивается значение считываемого символа. Блок памяти расширяется на один байт с сохранением предыдущего состояния.
После цикла добавляется признак конца строки.
Вроде так.
EUGY вне форума Ответить с цитированием
Старый 12.03.2012, 17:01   #3
геннадий522
Пользователь
 
Регистрация: 16.12.2011
Сообщений: 20
По умолчанию

запись постфиксная,я так понимаю 1 чара +2 cnt =3. А только потом увеличивается на 1?
геннадий522 вне форума Ответить с цитированием
Старый 12.03.2012, 17:10   #4
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Да все корректно, что смущает?
EUGY вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамический массив gusluk Общие вопросы Delphi 9 13.10.2011 15:27
Динамический Массив С++ Voldemort93 Помощь студентам 7 08.10.2011 09:42
Динамический массив, массив указателей alexalisa Паскаль, Turbo Pascal, PascalABC.NET 4 22.04.2011 21:33
Динамический массив - или всё таки не динамический? vedro-compota Общие вопросы C/C++ 30 10.12.2010 23:22
Динамический массив DEMUT Общие вопросы C/C++ 2 07.11.2010 21:10