Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 58, средняя оценка - 4.83
le nom
4 / 4 / 0
Регистрация: 03.01.2009
Сообщений: 50
#1

Как задать размерность одномерного массива - C++

03.01.2009, 13:17. Просмотров 7144. Ответов 7
Метки нет (Все метки)

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

C++
1
2
LenS=strlen(str);
char Search[LenS];//выдает ошибку
Можно ли размерность задавать не числом?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.01.2009, 13:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как задать размерность одномерного массива (C++):

Правильно задать размерность массива - C++
unsigned char phrase = "XАXАXАXАX"; unsigned char to_display; В массиве phrase буква А - русские в utf-8. по два байта на...

Задать размерность массива рандомно, и выполнить над ним действие! - C++
Объявить массив целых чисел и с заполнить его случайными значениями. Диапазон значений его элементов заданы в Вашем варианте...

Задать размерность матрицы с клавиатуры - C++
Задан двумерный массив U. Значения n и m должны вводиться. Внутренние значения массива выбираются случайно. Полученный массив должен...

Задать размерность матрицы с клавиатуры - C++
Подскажите пожалуйста как сделать чтобы можно было задавать размер матрицы с клавиатуры. Код программы: #include <iostream.h> ...

Как хранить размерность массива? - C++
Здравствуйте. Мне нужно решить задачу: template < class T, size_t N> std::size_t length(const T (&)) { return N; }; ...

Как увеличить размерность массива? - C++
В процессе отладки программы появилась необходимость увеличить массивы, объявленные ниже, на 4 элемента. Можно ли это сделать в первом и...

7
Vourhey
Почетный модератор
6485 / 2259 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
03.01.2009, 14:37 #2
Используй динамическое выделение памяти. malloc, new и т. д.
0
Del_Piero_10
Smart is the new Sexy
25 / 25 / 1
Регистрация: 29.12.2008
Сообщений: 109
03.01.2009, 14:54 #3
Подскажите, пожалуйста, как задать размерность одномерного массива, чтобы ее можно было менять в зависимости от длины вводимой строки? str-строка текста, вводится с клавиатуры
По идее можно создать безразмерный массив.
Код
char search[];
Добавлено через 8 минут 6 секунд
Вот вариант с использованием malloc... (выделение памяти)

Код
char *s;
s=(char *) malloc(strlen(str));
1
le nom
4 / 4 / 0
Регистрация: 03.01.2009
Сообщений: 50
03.01.2009, 15:16  [ТС] #4
спасибо
0
manfeese
129 / 128 / 16
Регистрация: 04.01.2009
Сообщений: 415
07.01.2009, 00:00 #5
Цитата Сообщение от Del_Piero_10 Посмотреть сообщение
char *s;
s=(char *) malloc(strlen(str));
а что представляет собой в данном случае str?

И как быть, если надо заполнить такой массив с клавиатуры, а его размер не превышал истинного

Добавлено через 11 минут 14 секунд
И еще: пробовал в консольном прмложении объявлять строковую переменную как String, но пишет, что такой тип данных не поддерживает
0
ISergey
Maniac
Эксперт С++
1376 / 887 / 53
Регистрация: 02.01.2009
Сообщений: 2,663
Записей в блоге: 1
07.01.2009, 00:54 #6
можно еще использовать оператор "new", вот пример
C++
1
2
3
4
5
char *str;
str = new[len];//len размер массива
//.................
//после работы с "str" удалить
delete[] str;
И еще: пробовал в консольном прмложении объявлять строковую переменную как String, но пишет, что такой тип данных не поддерживает
подкличи
C++
1
#include <string.h>
и String надо с маленькой буквы писать string
0
XuTPbIu_MuHTAu
Эксперт С++
2226 / 741 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
07.01.2009, 01:02 #7
Цитата Сообщение от Del_Piero_10 Посмотреть сообщение
По идее можно создать безразмерный массив.
Код
char search[];
Нельзя. Получишь ошибку - unknown size. Безразмерных массивов вообще не бывает. Небольшой ликбез :
Массив - это
1. Указатель на начало массива в памяти.
2. Размер одного элемента
3. Количество элементов.

Размер одного элемента ты сообщаешь компилятору, когда задаешь тип массива(указателя)
Количество элементов ты держишь в голове(и переменной),поскольку компилятору наплевать. Он с адресами работает,а не с массивами. Память под массив резервируется либо в объявлении( Type arr[ size] //size - const.) либо динамически, вызовом new ( Type * arr = new T[size] ) или malloc ( Type * arr = (Type*) malloc(sizeof(Type) * size) ),где size - размер массива.

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

manfeese, вопросы вида : а что это за функция, а какие у нее параметры,и что она возвращает и что делает задавай сразу гуглу. В стандартной библиотеке их десятки, про каждую на форуме спрашивать чтоли?...
0
Del_Piero_10
Smart is the new Sexy
25 / 25 / 1
Регистрация: 29.12.2008
Сообщений: 109
07.01.2009, 11:53 #8
а что представляет собой в данном случае str?
str - это символьная строка. Мы узнаем, какой она длины, и выделяем память через указатель для массива такого же размера.

И как быть, если надо заполнить такой массив с клавиатуры, а его размер не превышал истинного
Он не будет превышать истинный размер. Ведь ты используешь указатель всего лишь на память, и выделаешь память для него. Читай про указатели , все поймешь.

Добавлено через 1 минуту 15 секунд
Нельзя. Получишь ошибку - unknown size
Уже просек!

Добавлено через 1 минуту 47 секунд
если надо заполнить такой массив с клавиатуры, а его размер не превышал истинного
и еще. В С++ ответственность за то, чтобы массив не вышел из своего размера ложится на программиста. Поэтому в любом случае за тим должен следить ты. Но про указатели читай-читай)
0
07.01.2009, 11:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.01.2009, 11:53
Привет! Вот еще темы с ответами:

Как поменять размерность массива? - C++
Здравствуйте! Я пытаюсь решить одну задачу, но у меня нет мыслей, как действовать... когда я дохожу к тому, что нужно поменять размерность...

Как определить размерность массива - C++
Есть такая задача : Найти общие элементы 2-х массивов и записать результат в файл. Как определить размерность 3-го массива , в...

Задать размерность вектору генератором случайных чисел - C++
Привет) Ситуация следующая: Динамический вектор. Написать программу по формированию динамического вектора целого типа. Имя вектора...

Как правильно задавать размерность массива? - C++
Всем привет! Есть абстрактный класс Transport(его наследуют 3 класса). Есть класс Garage. Мне нужно в классе гараж создать поле(массив...


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

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

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