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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.56
Krist_ALL
9 / 9 / 0
Регистрация: 01.02.2010
Сообщений: 317
#1

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

07.03.2010, 13:38. Просмотров 1777. Ответов 10
Метки нет (Все метки)

Мне нужно сделать массив слов.
char words[] = { "lalala","loplpo"};
как то так но вылазит оибка, так как массив получается двумерный.
но когда я делаю words*[] все норм. объясните почему?


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

Запись всех повторяющихся слов в новый массив слов - C++
компилируется без ошибок, запускаю консоль после 13 строчки, а именно ввода количества слов, программа где-то вылетает, думал на 15 что-то...

Использование библиотеки STL , контейнер string. Дан массив слов.Надо удалить все цифры из слов - C++
#include "StdAfx.h" #include <string> #include <iostream> #include <algorithm> using namespace std; int main() { string str...

Ввод слов в массив и подсчёт введённых слов - C++
как можно решить эту задачу:Напишите программу,использующую массив char и цикл для чтения по одному слову за раз до тех пор,пока не будет...

Массив слов - C++
Доброго времени суток, уважаемые форумчане. Будьте любезны, подскажите как решить задачку. Задача. Для каждого слова заданного...

Запись слов в массив - C++
Доброй ночи! Задание: задан массив из 6 записей., каждая запись состоит из фамилии студента и номера его группы. сформировать и...

Массив двойных слов C++ - C++
Есть массив двойных слов, подскажите пожалуйста что у него является младшим словом, а что старшим и как массив WORD перезаписать в массив...

Получить массив из слов - C++
Необходимо разработать функцию, которая будет возвращать массив слов, содержащихся в сообщении char** Words(char *s) Допустим...

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

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

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

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

char * words [] = {"word1","word2",};
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
15 / 15 / 0
Регистрация: 03.02.2010
Сообщений: 133
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
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,438
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
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:\PP\x.com в x.com\pp\c: ) через...

Сформировать массив слов из файла - C++
Здравствуйте. Подскажите пожалуйста, как сделать задание? В файле находится текст неизвестной длины, содержащий слова, знаки препинания...

Как заполнить массив слов? - C++
Есть двумерный динамический массив строк. Надо занести в каждую строку v при создании слово наподобии как с обычным массивом. char...

Добавить запись отсортированных слов в массив - C++
#include "stdafx.h" #include <iostream> #include <stdio.h> #include <string.h> #include <locale> // Для русского языка #include...

Организовать ввод слов с клавиатуры в массив - C++
Как организовать ввод слов с клавиатуры в массив таким образом, что-бы каждое слово помещалось в новую строку? Подскажите пожалуйста.


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

Или воспользуйтесь поиском по форуму:
kravam
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,438
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     Массив слов
Ответ Создать тему
Опции темы

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