Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.06.2011, 18:40   #1
Peperovich
Пользователь
 
Регистрация: 29.01.2009
Сообщений: 20
По умолчанию Про указатели

Разъясните пожалуйста такой момент про указатели:

Код:
#include <iostream>
#include <conio.h>
using namespace std;

int main()
{
    int *ptr,y=6;
    ptr=&y;
    cout<<ptr<<endl;
    
    char *ptr1="Hello";
    cout<<ptr1<<endl;
    
    getch();
}
В первом случае выводится адрес памяти, где находится 6, а во втором все слово.
Peperovich вне форума Ответить с цитированием
Старый 22.06.2011, 18:47   #2
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Всё дело в том, что оператор << работает с char* специальным образом, пытаясь вывести строку, которая находится по указываемому в указателе адресу.
netrino вне форума Ответить с цитированием
Старый 22.06.2011, 18:55   #3
Peperovich
Пользователь
 
Регистрация: 29.01.2009
Сообщений: 20
По умолчанию

А как тогда тут?
Код:
 char *ptr1[3]={"Hello","World","Mine"};
 cout<<ptr1<<endl;
Peperovich вне форума Ответить с цитированием
Старый 22.06.2011, 19:00   #4
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Так ведь здесь указатель на указатель. То есть char**. А << специализирован именно для char*
netrino вне форума Ответить с цитированием
Старый 22.06.2011, 19:01   #5
Peperovich
Пользователь
 
Регистрация: 29.01.2009
Сообщений: 20
По умолчанию

А ну тогда понятно, спасибо за ответы.
Peperovich вне форума Ответить с цитированием
Старый 22.06.2011, 19:17   #6
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2netrino
нету тут указателя на указатель

2Peperovich
const char *str = "123";
cout << static_cast<const void *>(str) << endl;
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 22.06.2011, 19:35   #7
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от pproger Посмотреть сообщение
2netrino
нету тут указателя на указатель
Как нету ?
netrino вне форума Ответить с цитированием
Старый 22.06.2011, 19:46   #8
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2netrino
да, забыл я, что массив неявно к указателю приводится
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Turbo Pascal] - задачи про подбрасывание монеты и про определение истины. Sent Tools Помощь студентам 10 28.10.2010 18:11
Вопрос про Свойство Visible и про иконки в imagelist Kappi4 Компоненты Delphi 2 21.05.2010 13:10
Реальна ли Вилка :) /*Я про букмекеров, а не про матрицу :d */ Izhic Свободное общение 14 10.11.2009 13:39
[C] массивы, указатели, двойные указатели. Iggel Общие вопросы C/C++ 5 05.05.2009 12:39
У меня вопрос про базы данных,а точнее про таблицы!!! Alexij Общие вопросы Delphi 1 13.04.2008 23:24