Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
Silver Ghost
0 / 0 / 0
Регистрация: 13.07.2008
Сообщений: 4
1

Помощь с массивом char breed[4] = {'Dog ','Cat ', 'Rat ', 'Mouse '}

13.07.2008, 04:10. Просмотров 1047. Ответов 5
Метки нет (Все метки)

У меня вот тут проблемка, и я просто хочу понять как оно работает... Я так более менее понимаю работу ссылки (*) и то, что по идее само имя массива является ссылкой на его первый елемент, но вот трабла:

char *breed[4] = {'Dog ','Cat ', 'Rat ', 'Mouse '};

Вот так в книги задан массив.. Ну во первых я не секу... зачем массив задавать с * если массив сам по себе * ??? Во вторых, почему он задается как 4 елемента, когда в нутри находятся 4 слова каждое из которых имеет скока-то элементов?
Потом я попробывал вот так:

char breed[4] = {'Dog ','Cat ', 'Rat ', 'Mouse '};

Тоесть без звездочки.. и мой VC++ выдаЛ:

C:C++ShufleShufle.cpp(15) : error C2117: 'Dog ' : array bounds overflow
C:C++ShufleShufle.cpp(15) : error C2117: 'Cat ' : array bounds overflow
C:C++ShufleShufle.cpp(15) : error C2078: too many initializers
C:C++ShufleShufle.cpp(15) : error C2117: 'Rat ' : array bounds overflow
C:C++ShufleShufle.cpp(15) : error C2117: 'Mouse ' : array bounds overflow
Error executing cl.exe.

Shufle.exe - 5 error(s), 0 warning(s)

Страшно у? ) Так вот можете плиз объяснить что это такое? ( массив тот раньше нигде не задовался, ваще - вот вся программа

void main()
{
char breed[4] = {'Dog ','Cat ', 'Rat ', 'Mouse '};
}

Заранее благодарен, Иван
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.07.2008, 04:10
Ответы с готовыми решениями:

Объявление класса Cat в файле Cat.hpp?
Всем доброго время суток столкнулся с такой вот проблемой, нужно объявить класс...

Работа с массивом char
Добрый день. Объясните, если не сложно, на пальцах в чем ошибка?...

Работа с массивом char
Товарищи подскажите пожалуйста, не могу никак понять в чём проблема. Есть...

Работа с массивом char
Вот задание Вам дана непустая строка, состоящая из строчных латинских букв,...

Работа с массивом символов Char
Народ помогите! 2. Дано целое число N и текстовый файл. Создать строковый...

5
Silver Ghost
0 / 0 / 0
Регистрация: 13.07.2008
Сообщений: 4
13.07.2008, 04:32  [ТС] 2
Вот я поэксперементировал:

cout << 'Breed: ' << *breed[0] << endl;

даст мне букву D (первый елемент первого слова)

cout << 'Breed: ' << *breed[1] << endl;

даст мне букву C (первый елемент второго слова).
И так далее.. Как я понял, *breed указывает на четыре массива, что то вроде:

*breed[0]= 'Dog'
*breed[1]= 'Cat'
*breed[2]= 'Rat'
*breed[3]= 'Mouse'

Но как получить доступ скачем ко второму элементу 2 массива? Я пробывал:

cout << 'Breed: ' << *breed[1][1] << endl;

Но дает мне ошибку.. почему?
0
Silver Ghost
0 / 0 / 0
Регистрация: 13.07.2008
Сообщений: 4
13.07.2008, 04:39  [ТС] 3
Гмык
В конце концов я дошел до того, что если я делаю
cout << *breed[1];
Я получаю букву C
а если я делаю
cout << breed[1];
я получаю слово cat

Плиз объясните кто=нить = я запутался - ведь когда ты объявляешь что то как ссылку (*) ведь само имя должно хранить в себе адресс, а не знаечение.. почему так?
0
sunex
2 / 2 / 0
Регистрация: 06.12.2007
Сообщений: 114
13.07.2008, 09:45 4
купи себе книгу Страуструпа, там и прочитаешь.
0
Adil
13.07.2008, 16:30 5
Не обязательно Страуструпа, любую книжку по С.

А суть в том, что
во-первых, не путай ссылку и указатель - это разные, хотя и похожие вещи.
во-вторых,
Код
char *breed[4] = {'Dog ','Cat ', 'Rat ', 'Mouse '};
суть объявление и инициализация массива указателей на строки, др. словами, массива из четырех адресов, по каждому из которых лежит строка из некоторого кол-ва символов.
Чтобы получить доступ к какому-то символу, надо
1)Получить указатель (адрес) нужной строки: breed[3]...;
1)Получить нужный символ этой строки: breed[3][2] (==u);

Удачи.
Silver Ghost
0 / 0 / 0
Регистрация: 13.07.2008
Сообщений: 4
14.07.2008, 02:48  [ТС] 6
Спасибо.. Также - я по книжке и учусь
0
14.07.2008, 02:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.07.2008, 02:48

Проблема с классом и массивом char-ов
Есть класс, содержащий одномерный массив из char-ов и методы для работы с ним....

Задание с массивом типа char
Нужно удалить все столбцы в которых есть хотя бы одна буква 'а'.Ошибка в...

проблема с массивом типа CHAR
нужно выполнить функцию fopen() . которая кушает на вход указатель на массив...


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

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

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