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

Вопросы по строкам - C++

Восстановить пароль Регистрация
 
Staratel
0 / 0 / 0
Регистрация: 23.05.2011
Сообщений: 4
26.05.2011, 22:43     Вопросы по строкам #1
Доброго времени суток.
У меня несколько вопросов для понимания строк.

1)
C++
1
2
char a = {'a','b','c'};
            cout << a;
вывод: abc

Вопрос: как компилятор понял, что a это строка, ведь я не добавлял завершающий нулевой символ. А если верить справочникам, насколько я помню, это обязательно. Или он сам его добавил? если да, то куда?

2)
Массив a сожержит числа {0,1,2.... 123,124}

C++
1
2
3
4
5
6
int z;
z = a[2][3][4] = *((int*)a + 2*5*5 + 3*5 + 4);
cout << " \n z =" << z;
 
z = a[2][3][4] = *(((int *)(( int **)a + 2) + 3) + 4);
cout << " \n z =" << z;
Почему в первом случае работает верно и z = 69, а во втором - нет, и z = 9.

3)
C++
1
2
3
4
char * s5[6] = {{"a"},{"ab"},{"abc"},{"abcd"},{"abcde"},{"abcdef"}};
 
for (int i=0; i<6; i++)
  {cout << &s5[i] << ' ';}
вывод: 0012FF4C 0012FF50 0012FF54 0012FF58 0012FF5C 0012FF60

Объявлен массив из 6-ти указателей на строки неопред-й длины. Разница между адресами = 4. Но разве эти указатели не должны являться также адресами первого элемента соответствующей строки? А если это так, то как же умещаются в этих четырех байтах строки, размер к-х больше 4-х? или они хранятся не по этим адресам?

4) Как привести массив типа char[N][M] к типу (char **) , а потом к (char *)?

Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2011, 22:43     Вопросы по строкам
Посмотрите здесь:

C++ Программка по строкам
Сортировка по строкам C++
Задание по строкам! C++
Задача по строкам!!! C++
C++ по строкам
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
schdub
 Аватар для schdub
2902 / 1246 / 222
Регистрация: 19.01.2009
Сообщений: 3,215
Завершенные тесты: 1
26.05.2011, 23:03     Вопросы по строкам #2
Цитата Сообщение от Staratel Посмотреть сообщение
C++
1
2
char a = {'a','b','c'};
cout << a;
на каком компайлире компилиться сей код?
у мну на MSVS 2008
Код
error C2078: слишком много инициализаторов
Staratel
0 / 0 / 0
Регистрация: 23.05.2011
Сообщений: 4
26.05.2011, 23:10  [ТС]     Вопросы по строкам #3
Цитата Сообщение от schdub Посмотреть сообщение
на каком компайлире компилиться сей код?
у мну на MSVS 2008
Код
error C2078: слишком много инициализаторов

всё проделывал в Студии 10-й
schdub
 Аватар для schdub
2902 / 1246 / 222
Регистрация: 19.01.2009
Сообщений: 3,215
Завершенные тесты: 1
26.05.2011, 23:15     Вопросы по строкам #4
Цитата Сообщение от Staratel Посмотреть сообщение
всё проделывал в Студии 10-й
хз, возможно - у мну нет под рукой 10-й студии, но что-то мне подсказывает, что брейсы пропущены:
C++
1
char a[] = {'a','b','c'};
Staratel
0 / 0 / 0
Регистрация: 23.05.2011
Сообщений: 4
26.05.2011, 23:22  [ТС]     Вопросы по строкам #5
Цитата Сообщение от schdub Посмотреть сообщение
хз, возможно - у мну нет под рукой 10-й студии, но что-то мне подсказывает, что брейсы пропущены:
только что перепроверил, строка печатается, но некорректно : после символов идет несколько крякозябов
schdub
 Аватар для schdub
2902 / 1246 / 222
Регистрация: 19.01.2009
Сообщений: 3,215
Завершенные тесты: 1
26.05.2011, 23:32     Вопросы по строкам #6
Цитата Сообщение от Staratel Посмотреть сообщение
после символов идет несколько крякозябов
Цитата Сообщение от Staratel Посмотреть сообщение
Вопрос: как компилятор понял, что a это строка, ведь я не добавлял завершающий нулевой символ. А если верить справочникам, насколько я помню, это обязательно. Или он сам его добавил? если да, то куда?
И каков будет вывод? Добавляется ли нулевой символ?
Rexer
 Аватар для Rexer
151 / 150 / 19
Регистрация: 10.10.2010
Сообщений: 691
27.05.2011, 08:41     Вопросы по строкам #7
я думаю,что ваша программа выводила из памяти символы пока не наткнулась на нулевой символ,а они встречаются в памяти часто
крокозябры просто встретились перед нулевым символом вот они и вывелись
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.05.2011, 14:19     Вопросы по строкам
Еще ссылки по теме:

Программа по строкам C++
Программа по строкам C++
C++ Комментарии к строкам

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

Или воспользуйтесь поиском по форуму:
Staratel
0 / 0 / 0
Регистрация: 23.05.2011
Сообщений: 4
30.05.2011, 14:19  [ТС]     Вопросы по строкам #8
Цитата Сообщение от schdub Посмотреть сообщение
И каков будет вывод? Добавляется ли нулевой символ?
не-а
Yandex
Объявления
30.05.2011, 14:19     Вопросы по строкам
Ответ Создать тему
Опции темы

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