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

Адреса элементов массивов - C++

Восстановить пароль Регистрация
 
Сетевой Боб
1 / 1 / 0
Регистрация: 01.02.2013
Сообщений: 28
13.03.2013, 02:14     Адреса элементов массивов #1
Добрый вечер.

Никак не могу понять зависимость типа переменной массивов и вывода адресов.

Пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
 
int main ()
{
    char str[20] = "I love you";
    char dfg[20] = {'I', ' ', 'l', 'o', 'v', 'e', ' ', 'y', 'o', 'u'};
    int wer[20] = {3, 54, 43, 23};
    
    cout << &str[3] << '\n';
    cout << &dfg[3] << '\n';
    cout << &wer[3] << '\n';
    
    return 0;
}
Вывод:

C++
1
2
3
ove you
ove you
0x7fff5c95ea64
В двух первых случаях массивы типа char инициализированы двумя способами. Почему для них не отдаются адреса?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2013, 02:14     Адреса элементов массивов
Посмотрите здесь:

Объявить массив не более чем 15 элементов. Вывести обратные по модулю величины и проверить изменились ли адреса элементов этих двух массивов. C++
Определить адреса и значения элементов массива C++
C++ Адреса элементов структуры
C++ Сформировать массив из элементов исходных массивов, меньших произведения последних элементов заданных массивов.
C++ Найти адреса элементов массива
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
palva
 Аватар для palva
2372 / 1594 / 190
Регистрация: 08.06.2007
Сообщений: 6,362
Записей в блоге: 4
13.03.2013, 02:23     Адреса элементов массивов #2
Потому что пойнтер на char для cout означает начало строки, и должна быть выведена вся строка. Пойнтер на int выводится объектом cout непосредственно как 16-ричное число.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11815 / 6794 / 769
Регистрация: 27.09.2012
Сообщений: 16,865
Записей в блоге: 2
Завершенные тесты: 1
13.03.2013, 02:28     Адреса элементов массивов #3
Особенности перегрузки оператора << для параметра char* кастуйте к void* например
Сетевой Боб
1 / 1 / 0
Регистрация: 01.02.2013
Сообщений: 28
13.03.2013, 02:49  [ТС]     Адреса элементов массивов #4
Спасибо за ответы. Извиняюсь за непонятливость: всё-таки, как можно узнать адрес элемента char?
palva
 Аватар для palva
2372 / 1594 / 190
Регистрация: 08.06.2007
Сообщений: 6,362
Записей в блоге: 4
13.03.2013, 02:58     Адреса элементов массивов #5
Так Croessmah ответил.
C++
1
 cout << (void*)&str[3] << '\n';
Yandex
Объявления
13.03.2013, 02:58     Адреса элементов массивов
Ответ Создать тему
Опции темы

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