Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Steelandrew
Заблокирован
1

Выделение динамической памяти

04.06.2018, 16:33. Просмотров 109. Ответов 2
Метки нет (Все метки)

Чтобы выделить динамическую память под символьный массив надо так:

C
1
2
3
4
5
6
7
8
int n;
char *str;
    
 
    printf("Enter the size of the array: ");
    scanf("%d", &n);
 
    str = (char*)malloc(n * sizeof(char));
или как правильно?
просто я выделяю допустим 5 байт, но в этот массив помещается всё что угодно.

Добавлено через 53 минуты
я вот знаете чего не могут понять... какой смысл в этой динамической памяти, если всё равно надо заранее задавать размер массива? не проще просто статический массив инициализировать? другое дело, если бы массив сам расширялся по мере поступления вводимых в него данных.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2018, 16:33
Ответы с готовыми решениями:

Выделение динамической памяти
В одномерном массиве,*состоящем из п вещественных элементов, вычислить: - минимальный элемент...

Выделение динамической памяти внутри функции
приветствую. Изучаю С, для лушчего усвоения изобретаю велосипед - попылатся реализовать собственный...

Алгоритм выделение динамической памяти под переменные различного типа
послезавтра экзамен, но я не могу найти в интернете ответы на эти вопросы: если знаете где...

Выделение динамической памяти для двумерного массива с посдедующим изменением его размера
Имеется вопрос по поводу реализации. Как это сделать без циклов и многомерных указателей, если это...

Вектор, утечка памяти, функция создания и выделение памяти
Здравствуйте. Есть проблема. функция malloc выделяет память лишь в функции CreateVector(), и при...

2
Ovederax
176 / 122 / 89
Регистрация: 30.04.2017
Сообщений: 265
04.06.2018, 16:44 2
Цитата Сообщение от Steelandrew Посмотреть сообщение
или как правильно?
Если str - это символьный массив под строку, то его размер
должен быть как минимум равен (длине строки + 1)*sizeof(char), чтобы ее коректно вмещать в себя

Цитата Сообщение от Steelandrew Посмотреть сообщение
я выделяю допустим 5 байт, но в этот массив помещается всё что угодно
туда поместятся 5 байт

Цитата Сообщение от Steelandrew Посмотреть сообщение
какой смысл в этой динамической памяти
Есть разница между статическим и динамическим выделением памяти
Под статический массив память выделяется в стеке, под динамический – в куче.
Размер статического массива должен быть известен до компиляции. Размер динамического массива можно определить во время выполнения программы.
Размер статического массива нельзя изменить во время выполнения программы. Динамический массив может изменять свой размер во время выполнения программы, как в сторону увеличения, так и в сторону уменьшения.
Память, выделенная под статический массив освобождается автоматически после выхода программы из блока, в котором он определён. Память, выделенную под динамический массив следует освобождать принудительно, чтобы избежать её утечек.

Не по теме:

Опять блокируются ссылки на стороние сайты с инфой... Доступ к ответам маил.ру потерян(

0
stake-k26
471 / 373 / 302
Регистрация: 25.04.2016
Сообщений: 1,092
04.06.2018, 16:46 3
Я только вот вчера разжевывал... второй раз писать лень, почитайте: Связь между указателями и массивами - замените во втором коде int на char и будет вам счастье.

По поводу того, что массив глотает все, что угодно. В си есть только один тип данных - числовой, другое дело, что числа делятся на целые (char, unsigned char, short int, int, unsigned int, long int .. и прочие возможные сочетания) и с точкой (float, double), но типы данных так или иначе остаются числовыми. И разница между int и char лишь в том, сколько памяти отводится для хранения одного числа. Только и всего. Т.е. char априори является числовым типом данных. И когда вы записываете символ в char, на самом деле записывается не символ, а его код, число, которое соответствует данному символу и потому:

C
1
2
3
char c;
for (c='a'; c<'z'; c++)
    printf("%c - %d\n", c, c);
будет прекрасно работать.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.06.2018, 16:46

Простейшее использование динамической памяти
Здравствуйте. Простой вопрос от новичка, осваивающего динамическую память. Есть программа: ...

Сохранение данных в динамической памяти
Есть у меня такая задача: Объявить массив из N указателей, каждый из которых должен сохранять...

Сохранение данных в динамической памяти
В динамическую память последовательно внести с клавиатуры целые числа (конец - число 0). Проверить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru