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

Массив слов - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.56
Krist_ALL
 Аватар для Krist_ALL
9 / 9 / 0
Регистрация: 01.02.2010
Сообщений: 317
07.03.2010, 13:38     Массив слов #1
Мне нужно сделать массив слов.
char words[] = { "lalala","loplpo"};
как то так но вылазит оибка, так как массив получается двумерный.
но когда я делаю words*[] все норм. объясните почему?


и еще написано на одном сайте что string удобнее чара... так ли это?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.03.2010, 13:38     Массив слов
Посмотрите здесь:

ввод слов в массив и подсчёт введённых слов C++
C++ Дан массив слов. Определить количество слов массива, которые не являются «перевертышем».
C++ Массив слов
C++ Массив символов (Подсчитать количество слов в строке, при условии, что в качестве разделителя слов используется один или несколько пробелов)
C++ Запись всех повторяющихся слов в новый массив слов
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,265
07.03.2010, 14:02     Массив слов #2
ЕСли тебе нужен массив слов, то старайся его как-то воплотить в жизнь.
C++
1
char words[] = { "lalala","loplpo"};
Это не массив слов, а непонятно что.
Более всего это похоже на МАССИВ СИМВОЛОВ (ибо char), неправильно инициализированный

Вот так бы я поправил:
C++
1
char words[] = {'a','b','c'};
Krist_ALL
 Аватар для Krist_ALL
9 / 9 / 0
Регистрация: 01.02.2010
Сообщений: 317
07.03.2010, 14:05  [ТС]     Массив слов #3
мне нужно так
words[] = { "cat","dog"};
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,265
07.03.2010, 14:15     Массив слов #4
Тебе сёдня нужно так, а завтра эдак. А синтаксис и вчера был и сёдня есть и завтра будет. Изволь относиться к нему с уважением.
Krist_ALL
 Аватар для Krist_ALL
9 / 9 / 0
Регистрация: 01.02.2010
Сообщений: 317
07.03.2010, 14:23  [ТС]     Массив слов #5
но когда я делаю words*[] все норм. объясните почему?
XuTPbIu_MuHTAu
Эксперт C++
 Аватар для XuTPbIu_MuHTAu
2217 / 732 / 10
Регистрация: 27.05.2008
Сообщений: 1,507
07.03.2010, 14:25     Массив слов #6
Цитата Сообщение от Krist_ALL Посмотреть сообщение
char words[] = { "lalala","loplpo"};
как то так но вылазит оибка, так как массив получается двумерный.
В си для хранения строки используется указатель на её начало и нулевой терминальный символ. Все,что между ними - строка.

Поэтому, строка ассоциируется с типом char *. Это не значит, что тип char * - строковый,а char - "буквенный". char - целочисленный, char * - вполне себе указатель. Строкового типа в языке Си нет. Однако,есть все,что нужно для того,чтобы самому описать обработку строк. Тип string - класс,который её инкапсулирует. Можно пользоваться им,можно написать свой. Пользоваться готовым проще,поскольку работа с указателями и памятью требует постоянных проверок на ошибки.

Итак,к твоей проблеме, тебе нужен массив указателей,для того,обращаться к строкам. Твоё ошибочное объявление - объявления массива "букв",который ты пытаешься инициализировать указателями. В общем-то, то,что ты хочешь,выглядит так :

char * words [] = {"word1","word2",};
Krist_ALL
 Аватар для Krist_ALL
9 / 9 / 0
Регистрация: 01.02.2010
Сообщений: 317
07.03.2010, 17:18  [ТС]     Массив слов #7
Рсшифруйте плз строку кода
C++
1
char * words [] = {"word1","word2",};
вордс хранит адрес первого элемента двумерного массива?
1 - w,o,r,d,1
2 - w,o,r,d,2
al072
14 / 14 / 0
Регистрация: 03.02.2010
Сообщений: 132
07.03.2010, 17:32     Массив слов #8
Цитата Сообщение от Krist_ALL Посмотреть сообщение
Рсшифруйте плз строку кода
C++
1
char * words [] = {"word1","word2",};
вордс хранит адрес первого элемента двумерного массива?
1 - w,o,r,d,1
2 - w,o,r,d,2
words, в данном случае массив указателей на char.

words[]- это не двумерный массив!
двумерный массив записывался бы следующим образом words[3][2]
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,265
07.03.2010, 17:58     Массив слов #9
Цитата Сообщение от Krist_ALL Посмотреть сообщение
Рсшифруйте плз строку кода
Код C++
1
2
3

char * words [] = {"word1","word2",};

вордс хранит адрес первого элемента двумерного массива?
1 - w,o,r,d,1
2 - w,o,r,d,2
Хм. Значи, объявлен массив указателей на типа char. То есть каждый элемент массива это переменная, содержащая адрес переменной типа char
Этот массив назыввается words

Кроме того
В памяти процесса (программы) созданы два таких массивчика-строки:
'w', 'o', 'r', 'l', 'd', '1', 0
'w', 'o', 'r', 'l', 'd', '2', 0

Эти два массивчика располождены в областях памяти, называемых ячейками.
Символ 'w' НУЛЕВОГО массивчика лежит в ячейке с неоторым адресом, например, это адрес 33fd20 (шестнадцатиричная запись... О, Господи!)
Важно: нулевой элемент массива words содержит значение 33fd20!

Задание тебе: что содержится в первом элементе массива words? (Чему равно words [1]?)
Krist_ALL
 Аватар для Krist_ALL
9 / 9 / 0
Регистрация: 01.02.2010
Сообщений: 317
07.03.2010, 18:35  [ТС]     Массив слов #10
в words [1] содержится указатель на адрес первого элемента (буквы) массива 'w', 'o', 'r', 'l', 'd', '2', 0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.03.2010, 19:27     Массив слов
Еще ссылки по теме:

Запись слов в массив C++
C++ Использование библиотеки STL , контейнер string. Дан массив слов.Надо удалить все цифры из слов
C++ Массив двойных слов C++

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

Или воспользуйтесь поиском по форуму:
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,265
07.03.2010, 19:27     Массив слов #11
Неправильно.
В words [1] содержится не указатель на адрес чего-то там, а АДРЕС нулевого элемента (буквы) массива 'w', 'o', 'r', 'l', 'd', '2', 0

не указатель на адрес, а АДРЕС
(можно сказать и так: указатель на нулевой элемент (букву) массива 'w', 'o', 'r', 'l', 'd', '2', 0)

Да, ещё я там неточность допустил, когда сказал, что два массива расположены в областях памяти, называемых ячейками.
Надо быть точным.
В каждой ячейке- один символ расположен.
А в раду ячеек соответственно все слово word1

ЭТО значит шесть ячеек подряд дадут такое слово. На шестую ячейку приходится символ 0, он АВТОМАТИЧЕСКИ вставляется компилятором.
Yandex
Объявления
07.03.2010, 19:27     Массив слов
Ответ Создать тему
Опции темы

Текущее время: 11:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru