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

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

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

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

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

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

C++
1
2
LenS=strlen(str);
char Search[LenS];//выдает ошибку
Можно ли размерность задавать не числом?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.01.2009, 13:17     Как задать размерность одномерного массива
Посмотрите здесь:
Правильно задать размерность массива C++
Задать размерность массива рандомно, и выполнить над ним действие! C++
Задать размерность матрицы с клавиатуры C++
Задать размерность матрицы с клавиатуры C++
Как хранить размерность массива? C++
Как определить размерность массива C++
Как поменять размерность массива? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6474 / 2249 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
03.01.2009, 14:37     Как задать размерность одномерного массива #2
Используй динамическое выделение памяти. malloc, new и т. д.
Del_Piero_10
Smart is the new Sexy
24 / 24 / 1
Регистрация: 29.12.2008
Сообщений: 109
03.01.2009, 14:54     Как задать размерность одномерного массива #3
Подскажите, пожалуйста, как задать размерность одномерного массива, чтобы ее можно было менять в зависимости от длины вводимой строки? str-строка текста, вводится с клавиатуры
По идее можно создать безразмерный массив.
Код
char search[];
Добавлено через 8 минут 6 секунд
Вот вариант с использованием malloc... (выделение памяти)

Код
char *s;
s=(char *) malloc(strlen(str));
le nom
4 / 4 / 0
Регистрация: 03.01.2009
Сообщений: 50
03.01.2009, 15:16  [ТС]     Как задать размерность одномерного массива #4
спасибо
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, но пишет, что такой тип данных не поддерживает
ISergey
Maniac
Эксперт С++
1372 / 883 / 52
Регистрация: 02.01.2009
Сообщений: 2,652
Записей в блоге: 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
XuTPbIu_MuHTAu
Эксперт С++
2224 / 739 / 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, вопросы вида : а что это за функция, а какие у нее параметры,и что она возвращает и что делает задавай сразу гуглу. В стандартной библиотеке их десятки, про каждую на форуме спрашивать чтоли?...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.01.2009, 11:53     Как задать размерность одномерного массива
Еще ссылки по теме:
C++ Как увеличить размерность массива?
C++ Задать размерность вектору генератором случайных чисел
C++ Как правильно задавать размерность массива?
размерность массива должна определяться динамически, это как? C++
Как вычесть из каждого элемента одномерного массива каждый элемент другого массива C++

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

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

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

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

Добавлено через 1 минуту 47 секунд
если надо заполнить такой массив с клавиатуры, а его размер не превышал истинного
и еще. В С++ ответственность за то, чтобы массив не вышел из своего размера ложится на программиста. Поэтому в любом случае за тим должен следить ты. Но про указатели читай-читай)
Yandex
Объявления
07.01.2009, 11:53     Как задать размерность одномерного массива
Ответ Создать тему
Опции темы

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