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

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

Войти
Регистрация
Восстановить пароль
 
Silver Ghost
0 / 0 / 0
Регистрация: 13.07.2008
Сообщений: 4
#1

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

13.07.2008, 04:10. Просмотров 961. Ответов 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 '};
}

Заранее благодарен, Иван
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.07.2008, 04:10     Помощь с массивом char breed[4] = {'Dog ','Cat ', 'Rat ', 'Mouse '}
Посмотрите здесь:

Объявление класса Cat в файле Cat.hpp? - C++
Всем доброго время суток столкнулся с такой вот проблемой, нужно объявить класс Cat в файле Cat.hpp. Работаю в Visual Studio 2008....

Работа с массивом char - C++
Добрый день. Объясните, если не сложно, на пальцах в чем ошибка? char*my1={"first my1","second my1"}; my1='E'; Синтаксически все...

Работа с массивом char - C++
Вот задание Вам дана непустая строка, состоящая из строчных латинских букв, цифр и пробелов. Длина строки не превышает 250 символов....

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

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

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

Задание с массивом типа char - C++
Нужно удалить все столбцы в которых есть хотя бы одна буква 'а'.Ошибка в delA,но не знаю как исправить #include <cstdlib> #include...

Проверка массива char на равенство с таким же массивом - C++
#include <iostream> using namespace std; int main() { char chArr={"4 8"}; char chCode={"4 8"}; if (chCode==chArr)...

Объяснить разницу между массивом типа char и строкой в стиле Си (нюансы использования нуль-терминатора) - C++
Господа, появился такой вопрос: какое место занимает \0 в массиве charов? В данном коде пытался выйти из цикла по достижении...

Ввод строки в структуре, заданной как char *str через scanf (ПОМОЩЬ) - C++
struct {char *str;} A; scanf("%s", &A.str); Аварийное завершение программы после ввода. Если задавать вручную значение внутри...

Написать функцию, которая находит элемент c минимальной массой класса Dog - C++
Всем доброго времени суток! Нужно написать функцию, которая будет находить минимальную массу из полей класса Dog и выводить на экран имя...

реализация cat в с++ - C++
Добрый день. Нужно переписать упрощенный cat (без опций и поддержки stdin) код : #include <cstdlib> #include <iostream> ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Silver Ghost
0 / 0 / 0
Регистрация: 13.07.2008
Сообщений: 4
13.07.2008, 04:32  [ТС]     Помощь с массивом char breed[4] = {'Dog ','Cat ', 'Rat ', 'Mouse '} #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;

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

Плиз объясните кто=нить = я запутался - ведь когда ты объявляешь что то как ссылку (*) ведь само имя должно хранить в себе адресс, а не знаечение.. почему так?
sunex
2 / 2 / 0
Регистрация: 06.12.2007
Сообщений: 114
13.07.2008, 09:45     Помощь с массивом char breed[4] = {'Dog ','Cat ', 'Rat ', 'Mouse '} #4
купи себе книгу Страуструпа, там и прочитаешь.
Adil
Сообщений: n/a
13.07.2008, 16:30     Помощь с массивом char breed[4] = {'Dog ','Cat ', 'Rat ', 'Mouse '} #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  [ТС]     Помощь с массивом char breed[4] = {'Dog ','Cat ', 'Rat ', 'Mouse '} #6
Спасибо.. Также - я по книжке и учусь
Yandex
Объявления
14.07.2008, 02:48     Помощь с массивом char breed[4] = {'Dog ','Cat ', 'Rat ', 'Mouse '}
Ответ Создать тему
Опции темы

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