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

При работе с символами адрес вместо адреса иероглифы, а с символьными массивами вобще ошибки. - C++

Восстановить пароль Регистрация
 
StreL0k
0 / 0 / 0
Регистрация: 03.10.2012
Сообщений: 6
03.10.2012, 00:41     При работе с символами адрес вместо адреса иероглифы, а с символьными массивами вобще ошибки. #1
/*
1) int a;
int *b=&a;
cout<<b<<endl;
2) char a;
char *b=&a;
cout<<b;
*/
Надо просто выдать адреса переменных. При работе с числами всё нормас.
При работе с символами адрес вместо адреса иероглифы, а с символьными массивами вобще ошибки.

Добавлено через 7 минут
Кароче рачно я всё сформулировал, лучше на простом примере покажите:
в символьном массиве вывести адрес допустим второго символа.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.10.2012, 00:41     При работе с символами адрес вместо адреса иероглифы, а с символьными массивами вобще ошибки.
Посмотрите здесь:

C++ Использование указателей при работе с одномерными массивами
Указатели при работе с одномерными и двумерными массивами C++
C++ Ошибка в перегрузке оператора - при работе с массивами
C++ Не получается перегрузить оператор ++ при работе с массивами
C++ Ошибка при работе с массивами char
C++ Использование функций при работе с двумерными массивами
C++ Проблемма при работе с массивами структур
C++ При работе с вектором изменяются адреса элементов

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.10.2012, 01:36     При работе с символами адрес вместо адреса иероглифы, а с символьными массивами вобще ошибки. #2
C++
1
2
3
char a;
char *b = &a; 
cout << (void*)b << endl;
Добавлено через 6 минут
Дело в том, что cout понимает указaтель на char, как указатель на строку. Поэтому будет выводить содержимое памяти, начиная с адреса b, пока не встрерит 0, что для него является символом окончания строки. Поэтому, для получения адреса, содержащегося в указателе на char, нужно привести указатель к типу void.
Для символьного массива:
C++
1
2
3
char arr[3] = {'a', 'b', 'c'};
cout << (void*)&(arr[1]) << endl;
cout << (void*)(arr + 1) << endl;
StreL0k
0 / 0 / 0
Регистрация: 03.10.2012
Сообщений: 6
03.10.2012, 17:20  [ТС]     При работе с символами адрес вместо адреса иероглифы, а с символьными массивами вобще ошибки. #3
Спасиб
Yandex
Объявления
03.10.2012, 17:20     При работе с символами адрес вместо адреса иероглифы, а с символьными массивами вобще ошибки.
Ответ Создать тему
Опции темы

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