Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.06.2013, 00:07   #11
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

Да, ошибка получилась, изините за дезинформацию)
Igor95 вне форума Ответить с цитированием
Старый 14.06.2013, 00:07   #12
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

RussDragon

константная ссылка передает структуру, но изменять в функцие ее нельзя, правильно? Получается, что ее следует использовать только тогда, когда структура заполнена, не требует изменений функцией и просто нужно воспользоватся данными находящимися в ней?

Да.

Более того, функция может быть мембером класса и при этом не менять остальных его данных. В этом случае функция должна записываться с модификатором const (если этого не делать, то к тебе быстро приклеят ярлык "ламер" :D )
Rififi вне форума Ответить с цитированием
Старый 14.06.2013, 00:17   #13
RussDragon
Форумчанин
 
Аватар для RussDragon
 
Регистрация: 07.04.2012
Сообщений: 216
По умолчанию

Завтра соберу в главном сообщении ответы. Спасибо, но появился вопрос насчет массивов еще один
Недавно делал морской бой, и для того чтобы проверить остались ли корабли для установки сделал массив:
int ships[4] = {4, 3, 2, 1};
Мне показалось это решение мега-ламерским, и мне хочется исправится Посоветуйте, как еще можно сделать проверку на количество кораблей?
RussDragon вне форума Ответить с цитированием
Старый 14.06.2013, 00:37   #14
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от RussDragon Посмотреть сообщение
Массивы:
Всегда ли стоит использовать арифмитические действия над указателями, вместо индексации массивов?
Это не принципиально. Как тебе удобнее, так и делай.
Единственное - большинству людей понятнее, когда доступ к элементам происходит через operator[]


Цитата:
Сообщение от RussDragon Посмотреть сообщение
Как лучше делать вызовы функций, через указатели, к примеру:
f(int *i)
или лучше использовать ссылочные параметры?
Зависит от назначения самой функции.

Ссылка используется тогда, когда ожидается работа с реально-существующим объектом.

Указатель - работа с адресами, либо работа с объектами, но при этом допускается, что объекта может и не быть.

Код:
Foo(Some* ptr); //функция допускает, что объекта может и не быть
//ей правомерно скормить nullptr вместо объекта

Bar(const Some& obj); //функция ожидает только реально-существующие объекты
//причем аргумент будет использован только для чтения

Baz(Some& obj); //функция ожидает только реально-существующие объекты
//причем функция планирует модификацию входного аргумента


Цитата:
Сообщение от RussDragon Посмотреть сообщение
Где в основном используются поразрадные операторы? При обработке сигнала какого-то определенного устройства, или еще где-то?
Например, там, где в какой нибудь 32 битный int нужно закодировать 32 состояния: вкл/выкл

Последний раз редактировалось _Bers; 14.06.2013 в 00:40.
_Bers вне форума Ответить с цитированием
Старый 14.06.2013, 10:24   #15
RussDragon
Форумчанин
 
Аватар для RussDragon
 
Регистрация: 07.04.2012
Сообщений: 216
По умолчанию

А взамен массива, что лучше использовать? Читайте выше мое сообщение, там подробнее.
RussDragon вне форума Ответить с цитированием
Старый 14.06.2013, 12:35   #16
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от RussDragon Посмотреть сообщение
А взамен массива, что лучше использовать? Читайте выше мое сообщение, там подробнее.
Я не понял смысла #13 сообщения.

Если бы я делал морской бой - использовал бы самый обычный массив вида:
Код:
size_t ships[4] = {4, 3, 2, 1};
Где индекс массива - длина корабля:
ships[0] - количество оставшихся у игрока кораблей длиной 1 клетку
ships[1] - количество оставшихся у игрока кораблей длиной 2 клетки
ships[2] - количество оставшихся у игрока кораблей длиной 3 клетки
ships[3] - количество оставшихся у игрока кораблей длиной 4 клетки

По поводу ламерских решений:

Не существует ламерских решений.

Существуют решения, которые просты и легки в плане понимания и сопровождения.
Это - хорошие решения.

Существуют решения, которые сложны в плане понимания и сопровождения.
Это - плохие решения.

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

"Пишите код так, что бы его сумел понять студент 3го курса медицинского факультета"(ц)Босс.
_Bers вне форума Ответить с цитированием
Старый 14.06.2013, 12:47   #17
RussDragon
Форумчанин
 
Аватар для RussDragon
 
Регистрация: 07.04.2012
Сообщений: 216
По умолчанию

Благодарю за объяснение
RussDragon вне форума Ответить с цитированием
Старый 27.06.2013, 18:03   #18
RussDragon
Форумчанин
 
Аватар для RussDragon
 
Регистрация: 07.04.2012
Сообщений: 216
По умолчанию

Вопрос.

Вроде как я понял, но я не понял. Вроде как я всегда инициализировал переменный, используя что-то типа: i = a+2; i = strlen(len) и т.д.
Объясните пожалуйста, что такое динамическая инициализация? Мало ли, я чего не понимаю... Просто как-то странно, что это дается в середине учебника.
RussDragon вне форума Ответить с цитированием
Старый 27.06.2013, 18:17   #19
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от RussDragon Посмотреть сообщение
Вопрос.
Вроде как я понял, но я не понял. Вроде как я всегда инициализировал переменный, используя что-то типа: i = a+2; i = strlen(len) и т.д.
Объясните пожалуйста, что такое динамическая инициализация? Мало ли, я чего не понимаю... Просто как-то странно, что это дается в середине учебника.
Ну это просто заумно выразились. Если по простому: "в момент выполнения в программе могут создаваться и инициализироваться переменные".

Таки считай, что твои: i = a+2; это и есть "динамическая инициализация".
_Bers вне форума Ответить с цитированием
Старый 27.06.2013, 18:46   #20
RussDragon
Форумчанин
 
Аватар для RussDragon
 
Регистрация: 07.04.2012
Сообщений: 216
По умолчанию

Ну круто, что. Давать это в середине учебника, в главе про ООП. А дальше идет тема "Динамическая инициализация конструкторов", "Присваивание объектов". По сути, весь раздел ООП на половину состоит из повторения структур. Это одно и тоже.
RussDragon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изучаю спрос на готовые контент для сайтов (базы данных) Goldcoding Свободное общение 37 31.07.2012 12:01
Программа Угадыватель. Имеются вопросы... oliviya1111 Помощь студентам 31 09.12.2011 21:19
Изучаю javascript не пойму почему не работает скрипт 4e4en JavaScript, Ajax 8 11.09.2010 19:17
Изучаю книгу Сорокина БД в Делфи crossmark БД в Delphi 12 06.09.2010 18:12
Помогите пожалуйста, изучаю Си++ и есть недоумения ч0ткий кекс Общие вопросы C/C++ 8 14.10.2008 05:50