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

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

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

Указатели - C++

14.01.2011, 23:31. Просмотров 489. Ответов 6
Метки нет (Все метки)

char * b; - я объявил, что b является указателем на char.
теперь, чтобы присвоить адрес указателю, то нужно сделать следующее
C++
1
2
char a = 'a';
b = &a;
если я хочу, чтобы моя функция возвращала указатель, то нужно написать вот такую функцию(не обращайте внимание, что функция бредовая, главное сама идея)
C++
1
2
3
4
char * f(char a)
{
    return &a;
}
Всё верно?

Но в книге я встречаю следующую функцию, а автор говорит, что функция возвращает указатель, хотя использует символ получения адреса
C++
1
2
3
4
char & f(char * b, int c)
{
    return b[c]
}
Но и это не все, дальше автор использует эту функцию следующим образом
a = f("wight", 0);
a = 'r'; // даже, если предположить, что a это указатель, то почему не используется символ * для разыименования?
в результате автор говорит, что получается right.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.01.2011, 23:31     Указатели
Посмотрите здесь:

C++ Указатели
C++ Указатели
C++ Указатели
[C++] Указатели C++
Указатели C++
Указатели C++
Указатели C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rangerx
1931 / 1540 / 141
Регистрация: 31.05.2009
Сообщений: 2,905
15.01.2011, 01:27     Указатели #2
Цитата Сообщение от FanAizu Посмотреть сообщение
Но в книге я встречаю следующую функцию, а автор говорит, что функция возвращает указатель, хотя использует символ получения адреса
Это не указатель, а ссылка.
Цитата Сообщение от FanAizu Посмотреть сообщение
Но и это не все, дальше автор использует эту функцию следующим образом
a = f("wight", 0);
a = 'r'; // даже, если предположить, что a это указатель, то почему не используется символ * для разыименования?
в результате автор говорит, что получается right.
Что за книга если не секрет?
FanAizu
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 31
15.01.2011, 02:20  [ТС]     Указатели #3
Да, уже прочитал про ссылки. небольшой вопрос по поводу ссылок и указателей. когда функция возвращает указатель, то нужно в операторе return использовать оператор получения адреса & ? А книга Язык программирования С++ [Стивен Прата]
Nameless One
Эксперт С++
5767 / 3416 / 255
Регистрация: 08.02.2010
Сообщений: 7,441
15.01.2011, 07:25     Указатели #4
FanAizu, да. И, на всякий случай, добавлю - возвращать указатели и ссылки на временные объекты - нельзя!
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
15.01.2011, 07:30     Указатели #5
Цитата Сообщение от Nameless One Посмотреть сообщение
да
Не всегда. Адрес чего требуется вернуть? Адрес статического данного? Или динамического? В первом случае для возврата указателя нужен оператор взятия адреса &, во втором для возврата ссылки противоположный ему оператор *.

Добавлено через 1 минуту
Цитата Сообщение от Nameless One Посмотреть сообщение
И, на всякий случай, добавлю - возвращать указатели и ссылки на временные объекты - нельзя!
А вот с этим согласен. И не только я, в литературе это тоже разбирается как ошибка.
Nameless One
Эксперт С++
5767 / 3416 / 255
Регистрация: 08.02.2010
Сообщений: 7,441
15.01.2011, 07:30     Указатели #6
Цитата Сообщение от taras atavin Посмотреть сообщение
Во-первых, при возврате ссылки этот оператор не допускается
Читать надо внимательно:
Цитата Сообщение от FanAizu Посмотреть сообщение
когда функция возвращает указатель
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.01.2011, 07:32     Указатели
Еще ссылки по теме:

указатели C++
C++ Указатели
C++ Указатели
Указатели C++
C++ Указатели

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

Или воспользуйтесь поиском по форуму:
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
15.01.2011, 07:32     Указатели #7
Исправил, но есть же ещё возврат указателя на динамическое данное, а в этом случае функция и так имеет готовый указатель.
Yandex
Объявления
15.01.2011, 07:32     Указатели
Ответ Создать тему
Опции темы

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