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

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

Войти
Регистрация
Восстановить пароль
 
Evancel
0 / 0 / 0
Регистрация: 09.05.2014
Сообщений: 5
#1

Как вывести на экран именно адрес символьного массива? - C++

12.05.2014, 16:21. Просмотров 483. Ответов 5
Метки нет (Все метки)

Добрый день!

Есть два кода с указателями: в одном указатель типа int, во втором типа char.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
using namespace std;
 
int main ()
{
    int* pAge = new int;
    cout << "Enter your dogs age: ";
    cin >> *pAge;
 
    cout << "Age " << *pAge << " is stored at 0x" << hex << pAge << endl;
 
    return 0;
}
и второй вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <string>
using namespace std;
 
int main ()
{
    cout << "Enter your name ";
    string Name;
    cin >> Name;
 
    int CharAllocated = Name.length ()+1;
    char* pCopyName = new char [CharAllocated];
 
    strcpy(pCopyName, Name.c_str());
    cout << "Dynamically allocated buffer contains: " << pCopyName << endl;
 
    return 0;
}

Поясните пожалуйста, почему во втором коде в выводе на экран мы пишем pCopyName вместо *pCopyName. Я так понимаю, что pCopyName должен указывать адрес символьного массива, а не его значение. Значение символьного массива по аналогии с первым кодом это *pCopyName. И как тогда вывести на экран именно адрес символьного массива?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.05.2014, 16:21     Как вывести на экран именно адрес символьного массива?
Посмотрите здесь:

Ввести символьный массив; найти адрес всех парных его элементов символьного массива - C++
Ввести символьный массив. Найти адрес всех парных его элементов

Чтение символьного массива из файла и вывод на экран - C++
Задание было: прочитать из файла символьный массив и обработать его. Т.к. нам чтение из файла пока не давали, пришлось искать самому. ...

Проверить и вывести цифры из символьного массива - C++
Здравствуйте! Новичок. Подскажите, пожалуйста! Не понимаю, как проверить в символьном массиве, что это цифра, а это символ? ...

Вывести список букв символьного массива - C++
Задан линейный массив с n латинскими строчными буквами, в нем возможно повторение букв. Вывести все буквы из массива, каждую только один...

Цикл: каждый символ символьного массива вывести на новой строке консоли - C++
Доброго всем здравия, споткнулся на ровном месте, цикл do while отказывается делать, то что я хочу char S = &quot;gcfhgcf hdhgf 4754...

Как выделить числа из символьного массива? - C++
Каким образом можно из массива симвалов выделить числа?

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Тамика
Котовчанин
870 / 450 / 143
Регистрация: 16.02.2010
Сообщений: 2,954
Записей в блоге: 27
12.05.2014, 16:39     Как вывести на экран именно адрес символьного массива? #2
Наверное криво объясню, потому как не знаю как энто пояснить.
Приблизительная сигнатура оператора вывода вот такая
std::ostream& operator<<(std::ostream&, const char*)
Он принимает первым параметром std::cout, а вторым - ваш массив чаров. Он видит, что у нас конст чар* и понимает, что Вы хотите вывести строку(что ж ещё). Потому выводит ее строкой.

Добавлено через 54 секунды
Может кто-то другой более понятно объяснит.

Добавлено через 2 минуты
Ах да, вывести адрес массива.
Вот.
C++
1
std::cout << static_cast<void*>(pCopyName) << std::endl;
Evancel
0 / 0 / 0
Регистрация: 09.05.2014
Сообщений: 5
12.05.2014, 16:48  [ТС]     Как вывести на экран именно адрес символьного массива? #3
а можно проще объяснить?
Vadim_Voronov
0 / 0 / 0
Регистрация: 12.05.2014
Сообщений: 6
12.05.2014, 16:59     Как вывести на экран именно адрес символьного массива? #4
Цитата Сообщение от Тамика Посмотреть сообщение
Наверное криво объясню, потому как не знаю как энто пояснить.

Не по теме:

Ниче се...

Тамика
Котовчанин
870 / 450 / 143
Регистрация: 16.02.2010
Сообщений: 2,954
Записей в блоге: 27
12.05.2014, 17:14     Как вывести на экран именно адрес символьного массива? #5
Цитата Сообщение от Vadim_Voronov Посмотреть сообщение
Ниче се...

Не по теме:

Чаво?



Добавлено через 4 минуты
Цитата Сообщение от Evancel Посмотреть сообщение
а можно проще объяснить?
const char* - это строка. Указатель на массив символов, строка, понимаете? И вот Ваш компилятор видит такой тип и понимает, что это строка, потому он выводит ее как строку, а не как указатель на массив.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.05.2014, 22:39     Как вывести на экран именно адрес символьного массива?
Еще ссылки по теме:

Как удалить элемент символьного массива? - C++
Собственно,в этом весь вопрос.:) Например,находимся мы в массиве из строк (char str) .Неважно в каком месте(допустим,на 5...

Как вывести на экран два массива рядом? - C++
добрый день! если выводить на экран два массива подряд, то один располагается под другим. их можно вывести рядом?

Как скопировать символ из символьного массива в другой массив - C++
Есть массив s и r в обоих по 8 символов + \0 (окончание строки). В s есть символ &quot;т&quot;, как его скопировать, например, в r? Проблема в...

Как определить и вывести на экран время сортировки массива - C++
Как вывести время сортировки самого массива, а не время работы всей программы? int main() { srand(time(NULL)); setlocale(LC_ALL,...

Как объявить массив на 5 элементов, вывести на экран, проинициализировать его и снова вывести на экран? - C++
как объявить массив на 5 элементов, вывести на экран, проинициализировать его и снова вывести на экран?

Пользовательская функция, выводящая массив на экран. Вывести на экран все четыре массива, используя функцию - C++
Дан код, Надо:• Написать пользовательскую функцию, выводящую массив на экран. Вывести на экран все четыре массива, используя функцию. ПРошу...


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

Или воспользуйтесь поиском по форуму:
Evancel
0 / 0 / 0
Регистрация: 09.05.2014
Сообщений: 5
12.05.2014, 22:39  [ТС]     Как вывести на экран именно адрес символьного массива? #6
Спасибо!
В итоге я пошла читать функцию strcpy - и я так понимаю, что в связи с тем что функция strcpy () возвращает указатель на буфер строки, то затем при передаче в cout в pCopyName содержится уже не адрес на буфер, а непосредственно массив символов/ строка. И поэтому для того, чтобы вывести адрес мы уже указываем &pCopyName.
Yandex
Объявления
12.05.2014, 22:39     Как вывести на экран именно адрес символьного массива?
Ответ Создать тему
Опции темы

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