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

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

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

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

14.01.2011, 23:31. Просмотров 494. Ответов 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++
Объясните что происходит в последней строке , и если мои комменты не правильны поправьте пожалуйста. void order ( int* numb1, int*...

Указатели.... - C++
Найти наибольшее отрицательное число с четными индексами. (Создать указатель на наиболее отрицательное число среди элементов с четными...

Указатели - C++
Используя вместо самой переменной указатель на нее, написать программу в соответствии с заданием (выполнение задания оформить...

Указатели - C++
Всем привет. Нам дали сделать лабу: Дана целочисленная прямоугольная матрица. 1) Определить номер первого из столбцов, содержащих хотя...

Указатели - C++
Есть задание,я сделала через массив,а мне нужно переделать через указатели. #include <iostream.h> #include <stdio.h> #include...

Указатели - C++
Вводится строка слов, разделенных пробелами (возможны лишние пробелы в начале и в конце строки и между словами). Скопировать в новую строку...

Указатели - C++
Доброй ночи! Вот столкнулась с такой проблемой, нужно из одной функции в другую перенести переменную number через указатель, что у меня...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rangerx
1932 / 1541 / 141
Регистрация: 31.05.2009
Сообщений: 2,911
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
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,446
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
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,446
15.01.2011, 07:30     Указатели #6
Цитата Сообщение от taras atavin Посмотреть сообщение
Во-первых, при возврате ссылки этот оператор не допускается
Читать надо внимательно:
Цитата Сообщение от FanAizu Посмотреть сообщение
когда функция возвращает указатель
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.01.2011, 07:32     Указатели
Еще ссылки по теме:

Указатели - C++
1) Предположим, что p - указатель, установленный на целую переменную со значением 3. Что можно сказать о значении выражений p, * p, & p, *...

Указатели - C++
Почему такой вариант кода невозможен(конкретно: строка 6)?int indicator, x = 15, y = 10; int *ptr; cin >> indicator; ...

Указатели - C++
Доброго времени суток. У меня задание. Кто поможет? Сказали разобраться с указателями. Программа ругается на +=, выдает ошибку. Как их...

указатели - C++
1) создать функцию(проблем нет) 2) в функции ввести и определить локальную переменную типа int и задать ей значение 1(проблем нет) 3) в...

Указатели - C++
Всем здрасьте ! Тут на днях я прочитал про указатели в одной книге , и мало что о них понял. Не могил бы вы мне рассказать , что это...


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

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

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