Перейти к содержанию
    

Передача структуры в функцию.

1. Если нужно работать с копией: void foo(type obj). При этом будет вызван конструктор копирования, со всеми вытекающими (стек, скорость).

2. Если нужно работать с исходным объектом:

а) Объект можно/нужно изменять: void foo(type* obj)

б) Объект нельзя изменять: void foo(const type& obj)

 

При sizeof(type) больше разрядности процессора/контроллера второй вариант быстрее первого, т. е. нужно передать только адрес объекта.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А если я передаю адрес объекта я могу в другой функции модифицировать объект? Если это однопоточная система, мютексы не нужны как я понимаю.

void main (void)
{
    while (1)
    {
         ModifyObject(MyStruct *my_struct);

          ProcessObject(MyStruct *my_struct);
    }
}

Изменено пользователем Jenya7

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...