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

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

Войти
Регистрация
Восстановить пароль
 
Керра
1276 / 444 / 45
Регистрация: 24.08.2011
Сообщений: 2,133
#1

Вопрос насчет указателей - C++

04.11.2011, 22:23. Просмотров 641. Ответов 5
Метки нет (Все метки)

Объясните мне пожалуйста, что значит подобное объявление:

const SimpleCat * const FunctionTwo (const SimpleCat * const TheCat);

Выше, разумеется, объявлен класс SimpleCat. Понятно, что const SimpleCat возле const TheCat - это указатель, который не может менять свой адрес, а const TheCat - переменная, которую нельзя изменять. const SimpleCat * возле const FunctionTwo наверно значит, что возвращается указатель, который впоследствии нельзя изменять, но тут я уже не очень уверена. Но что значит const FunctionTwo я совсем не понимаю.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2011, 22:23     Вопрос насчет указателей
Посмотрите здесь:

простой вопрос насчет вывода матрицы - C++
нужно вывести зеркальное отображение первой строки матрицы. for(j=0;j<2;j++) { f = mas; mas = mas; mas =...

Работа с указателями(небольшой вопрос насчет преобразований) - C++
*((uint*)space)=SIGNATURE; space+=sizeof(uint); Как записать в одну строчку ? *(((uint*)space)++)=SIGNATURE; так не...

вопрос про указателей - C++
вот напр эта строка int *m=new int; это как я понял создается указатель?тогда что такое new int?

насчет framework - C++
доброго времени суток. я написал приложение windows forms в visual studio 2010, но при запуске на других машинах пишет что нужно...

насчет print - C++
Для функции print требуется определенная библиотека? В задании нужно *вывести на печать* значения a и b. Строки 33, 34 #include...

Насчет функций - C++
Подскажите пожалуйста, можно ли присваивать переменным значения функций? Google ничего не дал. Например: int_main() {int v(void); ...

Насчет строк в boost - C++
Господа, приветствую вас. я долгие годы писал на C# И был очень удивлен, когда оказалось что стандартного типа "строка" в C++ нет -...

Насчет оператора присваивания - C++
Есть следующий код : #include <iostream> using namespace std; class Array { private: size_t mysize; int *mydata; ...

Насчет класса вектор - C++
Помогите в состовлении: создать класс вектор. Члены данные класса - 3 прямоугольные декартовые координаты. Члены функции класса...

Идеи насчет коммандной строки - C++
Друзья, нужна искренне Ваша помощь. Язык ANSI C Есть структура Flags, в которую я буду сохранять все значения с коммандной строки...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт С++
4958 / 3034 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
04.11.2011, 23:26     Вопрос насчет указателей #2
Керра, функция с именем FunctionTwo принимает константный указатель на константу (т.е. этот указатель нельзя менять (присваивать ему другой адрес), а также по этому указателю нельзя менять данные, на которые он указывает) типа SimpleCat и возвращает также константный указатель на константу типа SimpleCat.
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
04.11.2011, 23:36     Вопрос насчет указателей #3
Цитата Сообщение от Керра Посмотреть сообщение
Выше, разумеется, объявлен класс SimpleCat. Понятно, что const SimpleCat возле const TheCat - это указатель, который не может менять свой адрес, а const TheCat - переменная, которую нельзя изменять. const SimpleCat * возле const FunctionTwo наверно значит, что возвращается указатель, который впоследствии нельзя изменять, но тут я уже не очень уверена. Но что значит const FunctionTwo я совсем не понимаю.
Не много не так. Все наоборот.
Первый const относится к типу(SimpleCat), т.е. к данным( на которых указывает указатель), которые нельзя изменять, а второй const относится к указателю(* TheCat), т.е. к указателю, который нельзя именять.
Керра
1276 / 444 / 45
Регистрация: 24.08.2011
Сообщений: 2,133
05.11.2011, 16:04  [ТС]     Вопрос насчет указателей #4
silent 1991, именно это я и не могу понять. то есть функция возвращает что-то, что впоследствии изменять нельзя?

Добавлено через 9 минут
Цитата Сообщение от Chelioss Посмотреть сообщение
Первый const относится к типу(SimpleCat), т.е. к данным( на которых указывает указатель), которые нельзя изменять, а второй const относится к указателю(* TheCat), т.е. к указателю, который нельзя именять.
То есть если я пишу в параметрах функции
C++
1
(const int * const Something)
, во-первых, так вообще можно записать? Во-вторых, первый const значит что то что находится по адресу указателя изменять нельзя, а второй - что нельзя изменять сам адрес указателя?

Добавлено через 3 минуты
что-то я напартачила с этими двумя сообщениями тут...
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
05.11.2011, 17:19     Вопрос насчет указателей #5
Цитата Сообщение от Керра Посмотреть сообщение
что нельзя изменять сам адрес указателя?
Нельзя изменять адрес который хранится в указателе.
Читайте Неочевидные ответы на простые вопросы раздел 4 "Модификатор const"

Добавлено через 23 минуты
Цитата Сообщение от Керра Посмотреть сообщение
const SimpleCat * const FunctionTwo (...);
Не первый раз такое встречаю, и не вижу смысла во втором const, функция возвращает lvalue которое и так нельзя модифицировать.
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
05.11.2011, 18:13     Вопрос насчет указателей #6
Цитата Сообщение от Керра Посмотреть сообщение
, во-первых, так вообще можно записать?
Так вы же сами в первом сообщении написали то же самое. Конечно можно.
Цитата Сообщение от Керра Посмотреть сообщение
Во-вторых, первый const значит что то что находится по адресу указателя изменять нельзя, а второй - что нельзя изменять сам адрес указателя?
Да!
Yandex
Объявления
05.11.2011, 18:13     Вопрос насчет указателей
Ответ Создать тему
Опции темы

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