![]() |
|
Модераторы: bsa |
![]()
|
|
| stat007 |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 521 Регистрация: 9.10.2008 Репутация: -2 Всего: -4 |
Помогите разобраться с указателем!
у меня такой вопрос - если пишем:
я думал что в р будет записан адрес первого элемента массива и на экране будет соответственно нулевой элемент массива, а компилятор мне всё содержимое массива выдаёт, в чем я заблуждаюсь? Вот полный текст программы:
Помогите плиз разобраться..
Это сообщение отредактировал(а) JackYF - 5.11.2008, 20:55 |
||||||
|
|||||||
| IKM2007 |
|
|||
![]() Зима близко ![]() ![]() Профиль Группа: Участник Сообщений: 702 Регистрация: 26.4.2008 Где: olmedreca Репутация: 3 Всего: 40 |
-------------------- "К чёрту обстоятельства, я создаю возможности." Брюс Ли |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Вы забываете что Cpp типизированный язык, из этого следует что вышеуказаная строчка будет исполнена как cout<<(char*) p; то есть будет посылать в поток символы расположенные в памяти начиная с адреса указаного в p до тех пор пока не встретится символ '\0'; т.е будет расматривать p как указатель на Си-строку. |
|||
|
||||
| stat007 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 521 Регистрация: 9.10.2008 Репутация: -2 Всего: -4 |
ну так а всё-таки как сделать так, что бы обратиться именно к 0-му эл. массива, и вывести допустим только символ а ??
|
|||
|
||||
| IceSunrise |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 7.4.2008 Где: Санкт-Петербург Репутация: нет Всего: 3 |
и str и p - это указатели на первый элемент массива. Чтобы вывести его значение, разыменуйте указатель *str или *p.
|
|||
|
||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
нет, если ссылается это не значит что одно и то же.. Вот Вам пример :
Это сообщение отредактировал(а) mes - 5.11.2008, 20:37 |
||||
|
|||||
| stat007 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 521 Регистрация: 9.10.2008 Репутация: -2 Всего: -4 |
а всё-таки как это сделать, разоминовать в самой первой программе, которую я привёл?
напишите плиз правильный код!.. Это сообщение отредактировал(а) stat007 - 5.11.2008, 20:37 |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Это сообщение отредактировал(а) mes - 5.11.2008, 20:41 |
|||
|
||||
| IKM2007 |
|
|||
![]() Зима близко ![]() ![]() Профиль Группа: Участник Сообщений: 702 Регистрация: 26.4.2008 Где: olmedreca Репутация: 3 Всего: 40 |
Ну, различие может быть только в типах(const или нет). Или я не прав? -------------------- "К чёрту обстоятельства, я создаю возможности." Брюс Ли |
|||
|
||||
| IceSunrise |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 7.4.2008 Где: Санкт-Петербург Репутация: нет Всего: 3 |
mes, не совсем понял, что вы хотели показать своим примером:
|
|||
|
||||
| stat007 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 521 Регистрация: 9.10.2008 Репутация: -2 Всего: -4 |
э.. вы немного отклонились от темы! помогите мне разобратья!!!...
|
|||
|
||||
| IceSunrise |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 7.4.2008 Где: Санкт-Петербург Репутация: нет Всего: 3 |
stat007, вам уже несколько раз ответили и даже код привели:
Это строка выведет вам значение первого элемента массива. Это сообщение отредактировал(а) IceSunrise - 5.11.2008, 21:44 |
|||
|
||||
| stat007 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 521 Регистрация: 9.10.2008 Репутация: -2 Всего: -4 |
но ведь он выводит все элементы массива! а мне нужно только 1...
|
|||
|
||||
| yngwie19 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
stat007,
p или p[0]- это адрес первого элемента массива, соответственно чтобы получить значение, которое хранится по этому адресу, его нужно разыменовать. Писать так : *p[0] нельзя, поэтому нужно писать так *p. Это сообщение отредактировал(а) yngwie19 - 5.11.2008, 22:46 |
|||
|
||||
| mes |
|
||||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Вы уверены, что пробуете тот код, который Вам тут подказали ?? Сравните , пожалуйста, внимательно и Вы увидете что в том коде, который выводит у Вас строку не хватает одной маленькой звездочки Добавлено @ 22:55
а как насчет такого примера ?
P.S название str выбрал специально для демонстрации Добавлено @ 22:59 точнее сказать для указателя p[n] это *(p+n), (при n==0 можно записать просто *p ) где p это указатель, а n целочисленое значение. Это сообщение отредактировал(а) mes - 5.11.2008, 23:00 |
||||||
|
|||||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |