|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
13.06.2013, 23:22 | #1 |
Форумчанин
Регистрация: 07.04.2012
Сообщений: 216
|
Изучаю С++, имеются вопросы
По совету Пепел Феникса создал эту тему. Очень хотелось бы, чтобы ее не удаляли, я думаю, если мои вопросы будут находится в одной единственной теме, всем будет удобнее. Я не очень люблю создавать много тем, когда вопрос спецефичный, но при этом не особо сложный.
- Спасибо. Вопросы: Перехожу к ООП, хочу уточнить, что не понимаю. Массивы: Всегда ли стоит использовать арифмитические действия над указателями, вместо индексации массивов? Функции: Как лучше делать вызовы функций, через указатели, к примеру: f(int *i) или лучше использовать ссылочные параметры? Поразрядные операторы: Где в основном используются поразрадные операторы? При обработке сигнала какого-то определенного устройства, или еще где-то? Структуры, объеденения: Тот же вопрос, что и с массивами. Как лучше передавать структуры, ссылками или указателями? Если вам не сложно, приведите пример использования Битовых полей и объеденений. Вроде это все, что я не до конца понял. — спасибо. UPD1: Для тех, у кого есть время, дайте пожалуйста задание для практики по этим главам (Мне нужно их повторить): https://www.dropbox.com/sh/596nmo7vkqfhxa8/TddkIEI-6c Последний раз редактировалось RussDragon; 13.06.2013 в 23:54. |
13.06.2013, 23:33 | #2 |
Форумчанин
Регистрация: 03.01.2013
Сообщений: 388
|
-арфиметические действия над указателями всегда выполняются быстрее, чем индексация (т.к при индексации компилятору приходится генерировать код сдвига от начала массива до указанной позиции... лишнее время)
-ссылки - это, ну, скажем, второе имя переменной... ссылка использует упрощенный, по сравнению с указателями, синтаксис (соответственно работает также). Лучше передать адрес объекта в функцию явно для того, чтобы не искать прототип функции и не смотреть передается аргумент по ссылке или по указателю... Для удобочитаемости кода + освобождения от возможных ошибок (утечка памяти и т.п) лучше использовать ссылки (но разумно использовать). |
13.06.2013, 23:43 | #3 | |
Форумчанин
Регистрация: 07.04.2012
Сообщений: 216
|
Цитата:
|
|
13.06.2013, 23:47 | #4 | |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
2Igor95
Цитата:
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance |
|
13.06.2013, 23:53 | #5 |
Форумчанин
Регистрация: 03.01.2013
Сообщений: 388
|
Ну объясните Вы, не молчите :-)
|
13.06.2013, 23:53 | #6 |
Старожил
Регистрация: 19.08.2009
Сообщений: 2,119
|
RussDragon
Всегда ли стоит использовать арифмитические действия над указателями, вместо индексации массивов? зависит только от особенностей используемого алгоритм и хотения левой пятки программиста. в машинном коде никакой разницы нет. Как лучше делать вызовы функций, через указатели, к примеру: f(int *i) если функция не изменяет параметр - то лучше всего передавать аргумент по-значению. исключение составляют здоровенные типы/структуры. которые затратно копировать. в общем случае ссылка предпочтительнее - она не может быть null, к тому позволяет организовать вызов без временной переменной struct Foo {}; Foo GetFoo(); void DoSmth(const Foo&); DoSmth(GetFoo()); Где в основном используются поразрадные операторы? при работе с битами. Проверка битовой маски, подсчет битов и пр. алгоритмы Тот же вопрос, что и с массивами. Как лучше передавать структуры, ссылками или указателями? передавать по константной ссылке, если структура не меняется внутри функции, иначе - по ссылке Если вам не сложно, приведите пример использования Битовых полей и объеденений. посмотри определение структуры in_addr или LAGRE_INTEGER - объединение используется для быстрого доступа к разным частям значения
А вы почему со мной не соглашаетесь, у вас что, импотенция? (c) ACE Valery
|
13.06.2013, 23:58 | #7 |
Старожил
Регистрация: 19.08.2009
Сообщений: 2,119
|
арфиметические действия над указателями всегда выполняются быстрее, чем индексация (т.к при индексации компилятору приходится генерировать код сдвига от начала массива до указанной позиции... лишнее время)
:D
А вы почему со мной не соглашаетесь, у вас что, импотенция? (c) ACE Valery
|
14.06.2013, 00:02 | #8 |
Форумчанин
Регистрация: 07.04.2012
Сообщений: 216
|
Подождите, если я правильно понял, константная ссылка передает структуру, но изменять в функцие ее нельзя, правильно? Получается, что ее следует использовать только тогда, когда структура заполнена, не требует изменений функцией и просто нужно воспользоватся данными находящимися в ней?
|
14.06.2013, 00:06 | #9 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
14.06.2013, 00:07 | #10 | |
Я только Учусь
Форумчанин
Регистрация: 06.03.2013
Сообщений: 193
|
Цитата:
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Изучаю спрос на готовые контент для сайтов (базы данных) | 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 |