Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Указатели 
:(
    Опции темы
Lotles
Дата 27.7.2010, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 6.4.2010

Репутация: нет
Всего: нет



Не совсем понимаю указатели
Код

char* str[2]={"111","222"};
cout << *(&str[0]) << endl;
cout << *str[0] << endl;

Не понимаю различия
Объясните pliz !!! 
PM MAIL Skype   Вверх
bsa
Дата 27.7.2010, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



str[0] - это char*
*str[0] - это char
&str[0] - это char** (это тоже самое что и str + 0)
*&str[0] - это char *

PM   Вверх
Lotles
Дата 27.7.2010, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 6.4.2010

Репутация: нет
Всего: нет



Есть какие нибудь книги, где хорошо объеснены массивы указателей 
PM MAIL Skype   Вверх
djamshud
Дата 27.7.2010, 18:18 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 4
Всего: 39



Керниган и Ритчи (K&R).


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
EvilsInterrupt
Дата 27.7.2010, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Executables research
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 14.7.2007
Где: Железнодорожный, МО, Россия

Репутация: нет
Всего: 9



Lotles, многие вещи запоминаются сами собой, если пишешь много, а не только читаешь! Теория говорит "что вот мол существует", а практика говорит "на самом деле, ты можешь полагаться на ...". Чаще практикуй ;)
PM MAIL WWW ICQ Jabber   Вверх
bsa
Дата 27.7.2010, 23:43 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Lotles, попробуй почитать часто задаваемые вопросы, может это то, что тебе нужно.
PM   Вверх
Lotles
Дата 28.7.2010, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 6.4.2010

Репутация: нет
Всего: нет



Если str[0]- указатель, то почему
Код

cout << str[0] << endl

выдает 111, по идеи должен быть адрес ? 

Это сообщение отредактировал(а) Lotles - 28.7.2010, 16:31
PM MAIL Skype   Вверх
bsa
Дата 28.7.2010, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Lotles, для указателей на char сделано исключение, чтобы можно было без проблемы выводить строки в стиле С.
Если тебе нужен адрес (для отладки, надеюсь?), то используй static_cast<const void*>:
Код
cout << static_cast<const void*>(str[0]) << endl


Это сообщение отредактировал(а) bsa - 28.7.2010, 22:40
PM   Вверх
Lotles
Дата 29.7.2010, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 6.4.2010

Репутация: нет
Всего: нет



Еще один вопрос
Код

#include <stdafx.h>
#include <conio.h>
using namespace std;
int main(){
char* str[2]={"111","222"};
return 0;
}

Если написать так:
Код

cout << str[0] << endl;

Объекту cout передаем указатель str[0] на массив "111", cout выводит данные, находящиеся по адресу (строку 111)
Если написать так:
Код

cout << *str[0] << endl;

bsa вы написали что *str[0] имеет тип char, но если придерживаться той же логиге, что и здесь,
Код

cout << str[0] << endl;

(т.e если указатель разъименовать, что делает cout, должна выводится строка до знака'/0'), то должна выводиться строка, а не символ

  

Это сообщение отредактировал(а) Lotles - 29.7.2010, 14:40
PM MAIL Skype   Вверх
bsa
Дата 29.7.2010, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Lotles, cout ничего не разыменовывает. Просто есть operator<<(std::ostream&,const char*), который выводит строку в стиле си, на которую указывает второй параметр. Когда ты пишешь *str[0], то вызывается уже oprator<<(std::ostream&,char), который выводит один символ.
PM   Вверх
Lotles
  Дата 29.7.2010, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 6.4.2010

Репутация: нет
Всего: нет



Ну вот, я разобрался, кажись , с указателями.
bsa спасибо, 100 постов наберу поставлю плюсик !!!


Это сообщение отредактировал(а) Lotles - 29.7.2010, 15:25
PM MAIL Skype   Вверх
xvr
Дата 11.8.2010, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(Lotles @ 29.7.2010,  15:18)
bsa спасибо, 100 постов наберу поставлю плюсик !!!

Ждать 100 постов не обязательно - плюсик поставил

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0842 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.