Структура c: Сложные типы данных в Си : структуры, объединения, битовые поля
|
Понимание языка C для встраиваемых систем: Что такое структуры?
Добавлено 7 июня 2019 в 23:03
Сохранить или поделиться
Данная статья предоставляет основную информацию о структурах в программировании для встраиваемых систем на языке C.
После введения в структуры мы рассмотрим некоторые важные применения этого мощного объекта данных. Затем мы рассмотрим синтаксис языка C, позволяющий объявлять структуры. Наконец, мы кратко обсудим требование по выравниванию данных. Мы увидим, что мы можем уменьшить размер структуры, просто изменив порядок ее членов.
Структуры
Ряд переменных одного типа, которые логически связаны друг с другом, может быть сгруппирован в виде массива. Работа с группой, а не с набором независимых переменных, позволяет нам упорядочивать данные и использовать их более удобным способом. Например, мы можем определить следующий массив для хранения последних 50 отсчетов АЦП, который оцифровывает голосовой ввод:
uint16_t voice[50];
Обратите внимание, что uint16_t
– это целочисленный тип без знака с шириной ровно 16 бит. Он определен в стандартной библиотеке C stdint.h, которая предоставляет типы данных определенной длины в битах, не зависящие от спецификаций системы.
Массивы могут быть использованы для группирования нескольких переменных одного типа данных. Но что если есть связь между переменными разных типов данных? Можем ли мы рассматривать эти переменные в нашей программе как группу? Например, предположим, что нам нужно указать частоту дискретизации АЦП, который генерирует голосовой массив, объявленный выше. Мы можем определить переменную типа float
для хранения значения частоты дискретизации:
float sample_rate;
Хотя переменные voice
и sample_rate
связаны друг с другом, они определены как две независимые переменные. Чтобы связать эти две переменные друг с другом, мы можем использовать мощную конструкцию данных языка C, которая называется структурой. Структуры позволяют нам группировать различные типы данных и работать с ними как с одним объектом данных. Структура может включать в себя различные виды типов переменных, такие как другие структуры, указатели на функции, указатели на структуры и так далее. Для примера с голосом мы можем использовать следующую структуру:
struct record {
uint16_t voice[50];
float sample_rate;
};
В этом случае у нас есть структура с именем record
, которая имеет два члена или поля: первый член – это массив элементов uint16_t
, а второй – переменная типа float
. Синтаксис начинается с ключевого слова struct
. Слово после ключевого слова struct
является необязательным именем, используемым позже для ссылки на структуру. Другие детали определения и использования структур мы обсудим в оставшейся части статьи.
Почему структуры важны?
Приведенный выше пример указывает на важное применение структур, то есть определение зависящих от приложения объектов данных, которые могут связывать друг с другом отдельные переменные разных типов. Это не только приводит к эффективному способу манипулирования данными, но также позволяет нам реализовывать специализированные структуры, называемые структурами данных.
Структуры данных могут использоваться для различных применений, таких как обмен сообщениями между двумя встроенными системами и хранение данных, собранных с датчика, в несмежных ячейках памяти.
Рисунок 1 – Структуры могут использоваться для реализации связного списка
Кроме того, структуры являются полезными объектами данных, когда программе требуется доступ к регистрам периферийного устройства микроконтроллера с отображаемой памятью.
Рисунок 2 – Распределение памяти микроконтроллера STM32
Объявление структуры
Чтобы использовать структуры, нам сначала нужно задать шаблон структуры. Рассмотрим пример кода, приведенный ниже:
struct record {
uint16_t voice[4];
float sample_rate;
};
Он указывает макет или шаблон для создания будущих переменных этого типа. Этот шаблон включает в себя массив uint16_t
и переменную типа float
. Имя шаблона – record
, оно идет после ключевого слова struct
. Стоит отметить, что для хранения шаблона структуры память не выделяется. Выделение памяти происходит только определения переменной структуры на основе этого шаблона. Следующий код объявляет переменную mic1
приведенного выше шаблона:
struct record mic1;
Теперь для переменной mic1
выделен раздел памяти. В нем есть место для хранения четырех элементов uint16_t
массива и одной переменной float
.
Доступ к членам структуры можно получить с помощью оператора члена (.
). Например, следующий код присваивает значение 100 первому элементу массива и копирует значение sample_rate
в переменную fs
(которая должна быть типа float
).
mic1.voice[0]=100;
fs=mic1.sample_rate;
Другие способы объявления структуры
В предыдущем разделе мы рассмотрели один из способов объявления структур. Язык C поддерживает и другие форматы, которые будут рассмотрены в этом разделе. Вы, вероятно, во всех своих программах будете придерживаться одного формата, но иногда знакомство с остальными может быть полезным.
Общий синтаксис объявления шаблона структуры:
struct tag_name {
type_1 member_1;
type_2 member_2;
…
type_n member_n;
} variable_name;
tag_name
и variable_name
являются необязательными идентификаторами. Обычно мы видим хотя бы один из этих двух идентификаторов, но есть случаи, когда мы можем убрать их обоих.
Синтаксис 1. Когда присутствуют tag_name
и variable_name
, мы определяем переменную структуры сразу после шаблона. Используя этот синтаксис, мы можем переписать предыдущий пример следующим образом:
struct record {
uint16_t voice[4];
float sample_rate;
} mic1;
Теперь, если нам нужно определить другую переменную (mic2
), мы можем написать:
struct record mic2;
Синтаксис 2. Включено только variable_name
. Используя этот синтаксис, мы можем переписать пример из предыдущего раздела следующим образом:
struct {
uint16_t voice[4];
float sample_rate;
} mic1;
В этом случае мы должны определить все свои переменные сразу после шаблона, и определить другие переменные позже в нашей программе мы не сможем (потому что шаблон не имеет имени, и далее мы не сможем ссылаться на него).
Синтаксис 3. В этом случае нет ни tag_name
, ни variable_name
. Шаблоны структур, определенные таким образом, называются анонимными структурами. Анонимная структура может быть определена в другой структуре или объединении. Пример приведен ниже:
struct test {
// анонимная структура
struct {
float f;
char a;
};
} test_var;
Чтобы получить доступ к членам показанной выше анонимной структуры, мы можем использовать оператор члена (.
). Следующий код присваивает значение 1.2 члену f
.
test_var.f=1.2;
Поскольку структура является анонимной, мы получаем доступ к ее членам, используя оператор члена только один раз. Если бы она имела имя, как в следующем примере, нам пришлось бы использовать оператор члена дважды:
struct test {
struct {
float f;
char a;
} nested;
} test_var;
В этом случае мы должны использовать следующий код, чтобы присвоить значение 1.2 для f
:
test_var.nested.f=1.2;
Как видите, анонимные структуры могут сделать код более читабельным и менее многословным. Также можно вместе со структурой использовать ключевое слово typedef
, чтобы определить новый тип данных. Этот метод мы рассмотрим в следующей статье.
Распределение памяти для структуры
Стандарт C гарантирует, что члены структуры будут располагаться в памяти один за другим в порядке, в котором они объявлены в структуре. Адрес памяти первого члена будет таким же, как адрес самой структуры. Рассмотрим следующий пример:
struct Test2{
uint8_t c;
uint32_t d;
uint8_t e;
uint16_t f;
} MyStruct;
Для хранения переменных c
, d
, e
и f
будут выделены четыре области памяти. Порядок расположения в памяти будет соответствовать порядку объявления членов: область для c
будет иметь наименьший адрес, затем идут d
, e
и, наконец, f
. Сколько байт нам нужно для хранения этой структуры? Учитывая размер переменных, мы знаем, что, по крайней мере, 1+4+1+2=8 байт требуется хранения этой структуры. Однако, если мы скомпилируем этот код для 32-разрядной машины, мы неожиданно заметим, что размер MyStruct
составляет 12 байтов, а не 8! Это связано с тем, что компилятор имеет определенные ограничения при выделении памяти для разных элементов структуры. Например, 32-разрядное целое число может храниться только в областях памяти, адрес которых делится на четыре. Такие ограничения, называемые требованиями выравнивания данных, реализованы для более эффективного доступа процессора к переменным. Выравнивание данных приводит к некоторой потере места (или заполнению) в распределении памяти. Здесь дается только краткое представление этой темы; подробности мы рассмотрим в следующей статье серии.
Рисунок 3 – Выравнивание данных приводит к некоторой потере места (или заполнению) в распределении памяти
Зная о требованиях к выравниванию данных, мы можем изменить в структуре порядок членов и повысить эффективность использования памяти. Например, если мы перепишем приведенную выше структуру, как показано ниже, ее размер на 32-разрядной машине уменьшится до 8 байт.
struct Test2{
uint32_t d;
uint16_t f;
uint8_t c;
uint8_t e;
} MyStruct;
Для встраиваемой системы с ограниченным объемом памяти это уменьшение размера объекта данных с 12 до 8 байт является существенной экономией, особенно когда программе требуется много таких объектов данных.
В следующей статье мы обсудим выравнивание данных более подробно и рассмотрим некоторые примеры использования структур во встраиваемых системах.
Подведем итоги
- Структуры позволяют нам определять зависящие от приложения объекты данных, которые могут связывать друг с другом отдельные переменные разных типов. Это приводит к эффективным средствам манипулирования данными.
- Специализированные структуры, называемые структурами данных, могут использоваться для различных применений, таких как обмен сообщениями между двумя встроенными системами и хранение данных, собранных с датчика, в несмежных областях памяти.
- Структуры полезны, когда нам необходим доступ к регистрам периферийного устройства микроконтроллера с отображаемой памятью.
- Возможно, мы можем повысить эффективность использования памяти, изменив порядок членов в структуре.
Оригинал статьи:
Теги
Embedded CSTM32Язык C для встраиваемых систем
Сохранить или поделиться
Статья 27. Структура образовательной организации / КонсультантПлюс
Статья 27. Структура образовательной организации
1. Образовательные организации самостоятельны в формировании своей структуры, если иное не установлено федеральными законами.
2. Образовательная организация может иметь в своей структуре различные структурные подразделения, обеспечивающие осуществление образовательной деятельности с учетом уровня, вида и направленности реализуемых образовательных программ, формы обучения и режима пребывания обучающихся (филиалы, представительства, отделения, факультеты, институты, центры, кафедры, подготовительные отделения и курсы, научно-исследовательские, методические и учебно-методические подразделения, лаборатории, конструкторские бюро, учебные и учебно-производственные мастерские, клиники, учебно-опытные хозяйства, учебные полигоны, учебные базы практики, учебно-демонстрационные центры, учебные театры, выставочные залы, учебные цирковые манежи, учебные танцевальные и оперные студии, учебные концертные залы, художественно-творческие мастерские, библиотеки, музеи, спортивные клубы, студенческие спортивные клубы, школьные спортивные клубы, общежития, интернаты, психологические и социально-педагогические службы, обеспечивающие социальную адаптацию и реабилитацию нуждающихся в ней обучающихся, и иные предусмотренные локальными нормативными актами образовательной организации структурные подразделения).
3. Утратил силу с 1 июля 2020 года. — Федеральный закон от 02.12.2019 N 403-ФЗ.
4. Структурные подразделения образовательной организации, в том числе филиалы и представительства, не являются юридическими лицами и действуют на основании устава образовательной организации и положения о соответствующем структурном подразделении, утвержденного в порядке, установленном уставом образовательной организации. Осуществление образовательной деятельности в представительстве образовательной организации запрещается.
5. Филиал образовательной организации создается и ликвидируется в порядке, установленном гражданским законодательством, с учетом особенностей, предусмотренных настоящим Федеральным законом.
6. Принятие федеральным органом исполнительной власти, органом исполнительной власти субъекта Российской Федерации или органом местного самоуправления решения о ликвидации филиала государственной и (или) муниципальной дошкольной образовательной организации либо общеобразовательной организации осуществляется в порядке, установленном частями 11 и 12 статьи 22 настоящего Федерального закона.
7. Филиалы федеральных государственных образовательных организаций высшего образования создаются и ликвидируются учредителем по согласованию с федеральным органом исполнительной власти, осуществляющим функции по выработке и реализации государственной политики и нормативно-правовому регулированию в сфере высшего образования.
(в ред. Федерального закона от 26.07.2019 N 232-ФЗ)
8. Создание филиалов государственных образовательных организаций, находящихся в ведении субъекта Российской Федерации, или муниципальных образовательных организаций на территории другого субъекта Российской Федерации или территории муниципального образования осуществляется по согласованию соответственно с органом исполнительной власти субъекта Российской Федерации, осуществляющим государственное управление в сфере образования, и органом местного самоуправления, осуществляющим управление в сфере образования, по месту нахождения создаваемого филиала.
9. Представительство образовательной организации открывается и закрывается образовательной организацией.
10. Создание или ликвидация филиала либо представительства образовательной организации на территории иностранного государства осуществляется в соответствии с законодательством иностранного государства по месту нахождения филиала или представительства, если иное не установлено международными договорами Российской Федерации.
11. Финансово-хозяйственная деятельность образовательной организации по месту нахождения ее филиала или представительства, расположенных на территории иностранного государства, осуществляется в соответствии с законодательством этого иностранного государства.
12. В государственных и муниципальных образовательных организациях создание и деятельность политических партий, религиозных организаций (объединений) не допускаются.
Открыть полный текст документа
Пермский радиотехнический колледж им. А. С. Попова
Организационная структура колледжа
Директор колледжа Тиунова Татьяна Валентиновна
- Тел. (342) 224-12-61, 224-00-90
- Факс: (342) 224-12-61
- [email protected]
Заместитель директора по учебно-производственной работе Корнейчук Полина Валерьевна
- Тел. (342) 280-71-93
- [email protected]
Заместитель директора по учебно-методической работе Казакова Елена Валерьевна
- Тел. (342) 224-04-21
- [email protected]
Заместитель директора по учебно-воспитательной работе Лукьянчук Марина Григорьевна
Заместитель директора по административно-хозяйственной работе Шилов Юрий Николаевич
- Тел. (342) 224-05-35
- [email protected]
Очное отделение
Руководитель — Эрлих Лариса Павловна
Местонахождение: г.Пермь, ул. Танкистов, д.46 (каб.336)
Подразделение по учебно-производственной практике
Руководитель — Карпов Матвей Анатольевич
Местонахождение: г.Пермь, ул. Танкистов, д.46 (каб.241)
Очно-заочное и заочное отделение
Руководитель — Шандрук Олеся Леонидовна
Местонахождение: г.Пермь, ул. Танкистов, д.46 (каб.241)
Отделение платных образовательных услуг
Руководитель — Лаврентьева Наталья Анатольевна
Местонахождение: г.Пермь, ул. Танкистов, д.46 (каб.208)
Подразделение по учебно-воспитательной работе
Руководитель — Лукьянчук Марина Григорьевна
Местонахождение: г.Пермь, ул. Танкистов, д.46 (каб.341)
Столовая
Руководитель — Ефремова Ольга Борисовна
Местонахождение: г.Пермь, ул. Танкистов, д.46 (столовая колледжа, 1 эт.)
C структура в структуре
Как вам должно быть уже известно, классы относятся к ссылочным типам данных. Это означает, что объекты конкретного класса доступны по ссылке, в отличие от значений простых типов, доступных непосредственно. Но иногда прямой доступ к объектам как к значениям простых типов оказывается полезно иметь, например, ради повышения эффективности программы. Ведь каждый доступ к объектам (даже самым мелким) по ссылке связан с дополнительными издержками на расход вычислительных ресурсов и оперативной памяти.
Для разрешения подобных затруднений в C# предусмотрена структура, которая подобна классу, но относится к типу значения, а не к ссылочному типу данных. Т.е. структуры отличаются от классов тем, как они сохраняются в памяти и как к ним осуществляется доступ (классы — это ссылочные типы, размещаемые в куче, структуры — типы значений, размещаемые в стеке), а также некоторыми свойствами (например, структуры не поддерживают наследование). Из соображений производительности вы будете использовать структуры для небольших типов данных. Однако в отношении синтаксиса структуры очень похожи на классы.
Главное отличие состоит в том, что при их объявлении используется ключевое слово struct вместо class. Ниже приведена общая форма объявления структуры:
где имя обозначает конкретное имя структуры.
Как и у классов, у каждой структуры имеются свои члены: методы, поля, индексаторы, свойства, операторные методы и события. В структурах допускается также определять конструкторы, но не деструкторы. В то же время для структуры нельзя определить конструктор, используемый по умолчанию (т.е. конструктор без параметров). Дело в том, что конструктор, вызываемый по умолчанию, определяется для всех структур автоматически и не подлежит изменению. Такой конструктор инициализирует поля структуры значениями, задаваемыми по умолчанию. А поскольку структуры не поддерживают наследование, то их члены нельзя указывать как abstract, virtual или protected.
Объект структуры может быть создан с помощью оператора new таким же образом, как и объект класса, но в этом нет особой необходимости. Ведь когда используется оператор new, то вызывается конструктор, используемый по умолчанию. А когда этот оператор не используется, объект по-прежнему создается, хотя и не инициализируется. В этом случае инициализацию любых членов структуры придется выполнить вручную.
Давайте рассмотрим пример использования структур:
Обратите внимание, когда одна структура присваивается другой, создается копия ее объекта. В этом заключается одно из главных отличий структуры от класса. Когда ссылка на один класс присваивается ссылке на другой класс, в итоге ссылка в левой части оператора присваивания указывает на тот же самый объект, что и ссылка в правой его части. А когда переменная одной структуры присваивается переменной другой структуры, создается копия объекта структуры из правой части оператора присваивания.
Поэтому, если бы в предыдущем примере использовался класс UserInfo вместо структуры, получился бы следующий результат:
Назначение структур
В связи с изложенным выше возникает резонный вопрос: зачем в C# включена структура, если она обладает более скромными возможностями, чем класс? Ответ на этот вопрос заключается в повышении эффективности и производительности программ. Структуры относятся к типам значений, и поэтому ими можно оперировать непосредственно, а не по ссылке. Следовательно, для работы со структурой вообще не требуется переменная ссылочного типа, а это означает в ряде случаев существенную экономию оперативной памяти.
Более того, работа со структурой не приводит к ухудшению производительности, столь характерному для обращения к объекту класса. Ведь доступ к структуре осуществляется непосредственно, а к объектам — по ссылке, поскольку классы относятся к данным ссылочного типа. Косвенный характер доступа к объектам подразумевает дополнительные издержки вычислительных ресурсов на каждый такой доступ, тогда как обращение к структурам не влечет за собой подобные издержки. И вообще, если нужно просто сохранить группу связанных вместе данных, не требующих наследования и обращения по ссылке, то с точки зрения производительности для них лучше выбрать структуру.
Любопытно, что в С++ также имеются структуры и используется ключевое слово struct. Но эти структуры отличаются от тех, что имеются в C#. Так, в С++ структура относится к типу класса, а значит, структура и класс в этом языке практически равноценны и отличаются друг от друга лишь доступом по умолчанию к их членам, которые оказываются закрытыми для класса и открытыми для структуры. А в C# структура относится к типу значения, тогда как класс — к ссылочному типу.
Введение
Мир вокруг можно моделировать различными способами. Самым естественным из них является представление о нём, как о наборе объектов. У каждого объекта есть свои свойства. Например, для человека это возраст, пол, рост, вес и т.д. Для велосипеда – тип, размер колёс, вес, материал, изготовитель и пр. Для товара в магазине – идентификационный номер, название, группа, вес, цена, скидка и т.д.
У классов объектов набор этих свойств одинаковый: все собаки могут быть описаны, с той или иной точностью, одинаковым набором свойств, но значения этих свойств будут разные.
Все самолёты обладают набором общих свойств в пределах одного класса. Если же нам надо более точное описание, то можно выделить подклассы: самолёт амфибии, боевые истребители, пассажирские лайнеры – и в пределах уже этих классов описывать объекты. Например, нам необходимо хранить информацию о сотрудниках компании. Каждый сотрудник, в общем, обладает большим количеством разных свойств. Мы выберем только те, которые нас интересуют для решения прикладной задачи: пол, имя, фамилия, возраст, идентификационный номер. Для работы с таким объектом нам необходима конструкция, которая бы могла агрегировать различные типы данных под одним именем. Для этих целей в си используются структуры.
Объявление структуры
Синтаксис объявления структуры
Полями структуры могут быть любые объявленные типы, кроме самой структуры этого же типа, но можно хранить указатель на структуру этого типа:
В том случае, если несколько полей имеют один тип, то их можно перечислить через запятую:
После того, как мы объявили структуру, можно создавать переменную такого типа с использованием служебного слова struct. Доступ до полей структуры осуществляется с помощью операции точка:
Структура, объявленная в глобальном контексте, видна всем. Структура также может быть объявлена внутри функции:
Можно упростить пример: синтаксис языка позволяет создавать экземпляры структуры сразу же после определения:
Структура также может быть анонимной. Тогда мы не сможем использовать имя структуры в дальнейшем.
В этом примере мы создали переменную A. Она является структурой с двумя полями.
Начальная инициализация структур
Структуру можно инициализировать во время создания как массив. Поля в этом случае будут присваиваться по порядку.
Замечание: таким образом можно только иницализировать структуру. Присваивать значение всей структуре таким образом нельзя.
Современный стандарт си позволяет инициализировать поля структуры по имени. Для этого используется следующий синтакис:
Определение нового типа
Когда мы определяем новую структуру с помощью служебного слова struct, в пространстве имён структур (оно не имеет ничего общего с пространствами имён С++) создаётся новый идентификатор. Для доступа к нему необходимо использовать служебное слово struct. Можно определить новый тип с помощью служебного слова typedef. Тогда будет создан псевдоним для нашей структуры, видимый в глобальном контексте.
Теперь при работе с типом Point нет необходимости каждый раз писать слово struct. Два объявления можно объединить в одно
Замечание. Если мы создаём новый тип-структуру, полем которого является указатель на этот же тип, то его необходимо объявлять явно с использованием служебного слова struct
Указатели на структуру
Указатель на структуру создаётся как обычно. Отличие заключается в том, что можно обращаться к полям структуры через указатель с помощью операции «стрелка» (минус + больше). Пример – пользователь вводит число – размер массива пользователей. Поле этого вводит для каждого из них логин и пароль. Третье поле – идентификатор – задаётся автоматически. После этого все пользователи выводятся на экран.
Обратите внимание на удаление массива структур: при удалении экземпляра структуры он не удаляет своих полей самостоятельно, поэтому необходимо сначала удалять поля, после этого удалять сам массив.
При вызове функции jsonUser мы передаём указатель на экземпляр структуры, поэтому внутри функции доступ до полей осуществляется с помощью оператора стрелка.
Устройство структуры в памяти
Поля структуры расположены в памяти друг за другом. Тип поля определяет сдвиг относительно предыдущего поля. Имя поля – это сдвиг относительно адреса экземпляра. На самом деле размер структуры не всегда равен сумме размеров её полей: это связано с тем, что компилятор оптимизирует расположение структуры в памяти и может поля небольшого размера подгонять до чётных адресов.
Первая структура должна иметь размер 6 байт, вторая 8 байт, третья 7 байт, однако на 32-разрядной машине компилятор VC сделает их все три равными 8 байт. Стандарт гарантирует, что поля расположены друг за другом, но не гарантирует, что непрерывно.
Есть возможность изменить упаковку структур в памяти. Можно явно указать компилятору каким образом производить упаковку полей структуры, объединений или полей класса. Каким образом это делать, зависит от компилятора. Один из самых распространённых способов прагма pack()
У неё есть несколько разновидностей, рассмотрим только одну. pragma pack(n) указывает значение в байтах, используемое для упаковки. Если параметр компилятора не заданы для модуля значения по умолчанию n 8. Допустимыми значениями являются 1, 2, 4, 8 и 16. Выравнивание поля происходит по адресу, кратному n или сумме нескольких полей объекта, в зависимости от того, какая из этих величин меньше.
Использование #pragma pack не приветствуется: логика работы программы не должна зависить от внутреннего представления структуры (если, конечно, вы не занимаетесь системным программированием или ломаете чужие программы и сети).
Приведение типов
Стандартом поведение при приведении одной структуры к другой не определено. Это значит, что даже если структуры имеют одинаковые поля, то нельзя явно кастовать одну структуру до другой.
Этот пример работает, но это хак, которого необходимо избегать. Правильно писать так
Привести массив к структуре (или любому другому типу) по стандарту также невозможно (хотя в различных компиляторах есть для этого инструменты).
Но в си возможно всё.
Но запомните, что в данном случае поведение не определено.
Вложенные структуры
Структура сама может являться полем структуры. Пример: структура Model – модель автомобиля, имеет название, номер, год выпуска и поле Make, которое в свою очередь хранит номер марки и её название.
Вложенные структуры инициализируются как многомерные массивы. В предыдущем примере можно произвести начальную инициализацию следующим образом:
P.S. подобным образом инициализировать строки не стоит, здесь так сделано только для того, чтобы упростить код.
Указатели на поля структуры и на вложенные структуры
Указатели на поля структуры определяются также, как и обычные указатели. Указатели на вложенные структуры возможны только тогда, когда структура определена. Немного переделаем предыдущий пример: «деанонимизируем» вложенную безымянную структуру и возьмём указатели на поля структуры Model:
Как уже говорилось ранее, в си, даже если у двух структур совпадают поля, но структуры имеют разные имена, то их нельзя приводить к одному типу. Поэтому приходится избавляться от анонимных вложенных структур, если на них нужно взять указатель. Можно попытаться взять указатель типа char* на поле структуры, но нет гарантии, что поля будут расположены непрерывно.
Примеры
1. Стек, реализованный с помощью структуры «Узел», которая хранит значение (в нашем примере типа int) и указатель на следующий узел. Это неэффективная реализация, которая требует удаления и выделения памяти под узел при каждом вызове операции push и pop.
2. Реализуем структуру – массив, и некоторые операции для работы с массивами. Тип массива зададим макроподстановкой.
3. Структура Линия, состоит из двух структур точек. Для краткости реализуем только пару операций
Обратите внимание на операции создания и копирования линии. Обязательно нужно копировать содержимое, иначе при изменении или удалении объектов, которые мы получили в качестве аргументов, наша линия также изменится. Если структура содержит другие структуры в качестве полей, то необходимо проводить копирование содержимого всех полей. Глубокое копирование позволяет избежать неявных зависимостей.
4. Структура комплексное число и функции для работы с ней.
Структуры. Часть 2. Выделение памяти для структуры. Вложенные структуры. Массивы native -структур
Данная тема базируется на темах:
Содержание
1. Каким образом выделяется память для структурной переменной? Пример применения операции sizeof
Объявление структурной переменной осуществляется в 2 этапа:
- объявление шаблона структуры как нового типа данных. На этом этапе память не выделяется. Формируется только информация о содержимом структуры;
- объявление самой переменной. На этом этапе выделяется память для любого поля (переменной), которое описывается в шаблоне структуры.
Пример. Пусть задан шаблон native -структуры, которая описывает книгу в библиотеке.
После такого описания память не выделяется.
Если описать переменную типа Book , тогда для такой переменной память будет выделена.
Размер памяти, которая выделяется для переменной B будет составлять: 70 + 50 + 4 + 4 = 128 байт. Для поля title выделится 70 байт (тип char занимает 1 байт). Для поля author выделится 50 байт. Для поля year (в Win32 ) выделится 4 байта (тип int ). Для поля price выделится 4 байта (тип float ).
В зависимости от разрядности операционной системы и конфигурации оборудования эта цифра может быть другой.
Пример. Определение размера памяти, которая выделяется для структурной переменной.
2. Какие особенности использования вложенных структур в программах?
Шаблон любой структуры может включать в себя другие структуры. Если в структуре описывается другая структурная-переменная, тогда для этой переменной память выделяется согласно правилам выделения памяти для структурной переменной (см. п.1).
3. Пример объявления и использования вложенной native -структуры
Пусть заданы два шаблона структур, которые объявляются в отдельном файле «MyStruct.h» :
– шаблон Point , описывающий точку на координатной плоскости:
– шаблон Triangle , описывающий треугольник на плоскости:
В шаблоне Triangle описывается три вложенных структуры (точки) типа Point .
Демонстрация работы со структурой Triangle .
Для использования метода strcpy() и подключения файла структуры нужно в начале модуля программы вписать:
В native -структуре
- можно объявлять другую native -структуру;
- можно объявлять value -структуру;
- нельзя объявлять ref -структуру, поскольку она есть типом-ссылкой.
4. Пример объявления и использование вложенной ref -структуры
Пусть задан шаблон ref -структуры, которая описывает точку на координатной плоскости
Однако, эта структура может быть вложенной в другой ref -структуре. Пример
В ref -структуре:
- можно объявлять другую ref -структуру;
- можно объявлять value -структуру;
- нельзя объявлять native -структуру. Система выдает сообщение: «Mixed types are not supported» («Смешанные типы не поддерживаются»).
5. Пример объявления и использования вложенной value -структуры
Пусть заданы два шаблона value -структур, которые описывают точку ( Point_value ) и треугольник ( Triangle_value )
В шаблоне value -структуры:
- можно объявлять другую вложенную value -структуру;
- нельзя объявлять вложенную ref -структуру
- нельзя объявлять вложенную native -структуру.
6. Как объявить массив структур ( native )? Пример объявления и использования
Для native -структур объявления массива происходит классическим для C/C++ способом.
Пусть задан шаблон структуры Point_native , которая описывает точку на плоскости.
Пример 1. Объявление и использование массива структур как значений.
Пример 2. Объявление и использование массива указателей на native -структуры.
7. Пример объявления и использования массива native -структур, который есть отдельным полем структуры (вложенным в структуру)
Структура может содержать вложенный массив структур.
Пусть задан шаблон native -структуры Point_native , что описывает точку на плоскости
Массив из n точек ( n = 1..10) можно представить в виде такого шаблона:
8. Пример объявления и использования двумерного массива native -структур
Пусть задана native -структура, которая описывает точку на плоскости.
Тогда, работа с двумерным массивом таких структур размером 5*10 будет приблизительно следующей
Класс Python как структура данных, подобная языку C.
Иногда полезно иметь тип данных, подобный структуре struct
в языке C объединяющий несколько именованных элементов данных.
Самый простой вариант создание структуры подобной C — это создание структуры из пустого объявления класса!
Например:
class Employee: """Структура Employee""" pass # Создаем пустую структуру john = Employee() # Заполняем члены структуры `Employee` >>> john.name = 'John Doe' >>> john.dept = 'computer lab' >>> john.salary = 1000 # Доступ к членам структуры `Employee` >>> john.dept # 'computer lab' # Изменение членов структуры `Employee` >>> john.salary = 1500 >>> john.salary # 1500
Или можно использовать объявление класса с атрибутом __slots__
. Атрибут __slots__
призван уменьшить накладные расходы памяти, а так же он может ускорить доступ к атрибутам.
Небольшое предостережение: необходимо только один раз объявлять определенный слот в дереве наследования.
class Employee: __slots__ = ['name', 'dept', 'salary'] # Создаем пустую структуру >>> john = Employee() # Заполняем члены структуры `Employee` >>> john.name = 'John Doe' >>> john.dept = 'computer lab' >>> john.salary = 1000 # Доступ к членам структуры `Employee` >>> john.name # 'John Doe' # Изменение членов структуры `Employee` >>> john.salary = 1500 >>> john.salary # 1500
Классы в Python могут иметь связанные с ним функции, которые работают только с экземпляром класса, тогда как в языке C, функция, которая хочет работать со структурой, должна каким-то образом принимать структуру в качестве параметра, обычно с помощью указателя. Следовательно, фрагменту кода Python, который ожидает определенный абстрактный тип данных, можно передать классу, который эмулирует методы этой структуры.
Например, если есть функция, которая форматирует некоторые данные из объекта file
, то можно определить класс с методами read()
и readline()
, которые будут получать данные из строкового буфера и передавать их в качестве аргумента.
Объекты метода экземпляра созданной структуры, также будут имеют атрибуты: m.__self__
— это объект структуры с методом .m()
, а m.__func__
объект функции, соответствующий методу.
Второй вариант объявления структуры данных, подобной языку C — это создание пользовательского типа данных при помощи встроенного модуля dataclasses
, который доступен с версии Python 3.7.
from dataclasses import dataclass @dataclass class Employee(): """Тип данных Employee""" name: str = None dept: str = None salary: int = 0 >>> john = Employee('John Doe', 'computer lab', 1000) >>> john # Employee(name='John Doe', dept='computer lab', salary=1000) >>> john.salary # 1000 >>> john.salary = 1500 >>> john.salary # 1500
Третий вариант объявления структуры — это использовать встроенный модуль ctypes
. Этот модуль представляет типы, совместимые с языком C. Для создания структур, используем его следующим образом:
from ctypes import * # Объявляем структуру class Employee(Structure): _fields_ = [ ('name', c_wchar_p), ('dept', c_wchar_p), ('salary', c_int) ] # Инициализируем члены структуры `Employee` >>> john = Employee('John Doe', 'computer lab', 1000) # Доступ к членам структуры `Employee` >>> john.name # 'John Doe' >>> john.salary # 1000 # Изменение членов структуры `Employee` >>> john.salary = 1500 >>> john.salary # 1500
Более подробно о создании структур, совместимые с языком C, смотрите материал «Структуры Structure
и Union
модуля ctypes
в Python»
И четвертый вариант, если конечно согласны на неизменяемую структуру, то это использование именованного кортежа.
Пример:
>>> import collections # Создаем структуру >>> Employee = collections.namedtuple('Employee', ['name', 'dept', 'salary']) # Заполняем члены структуры `Employee` >>> john = Employee('John Doe', 'computer lab', 1000) # смотрим >>> john # Employee(name='John Doe', dept='computer lab', salary=1000) # Доступ к членам структуры `Employee` >>> john.name 'John Doe' >>> john.salary 1000
Эффективность и Структура. C++
Эффективность и Структура
С++ был развит из языка программирования C и за очень немногими исключениями сохраняет C как подмножество. Базовый язык, C подмножество С++, спроектирован так, что имеется очень близкое соответствие между его типами, операциями и операторами и компьютерными объектами, с которыми непосредственно приходится иметь дело: числами, символами и адресами. За исключением операций свободной памяти new и delete, отдельные выражения и операторы С++ обычно не нуждаются в скрытой поддержке во время выполнения или подпрограммах.
В С++ используются те же последовательности вызова и возврата из функций, что и в C. В тех случаях, когда даже этот довольно эффективный механизм является слишком дорогим, С++ функция может быть подставлена inline, удовлетворяя, таким образом, соглашению о записи функций без дополнительных расходов времени выполнения.
Одним из первоначальных предназначений C было применение его вместо программирования на ассемблере в самых насущных задачах системного программирования. Когда проектировался С++, были приняты меры, чтобы не ставить под угрозу успехи в этой области. Различие между C и С++ состоит в первую очередь в степени внимания, уделяемого типам и структурам. C выразителен и снисходителен. С++ еще более выразителен, но чтобы достичь этой выразительности, программист должен уделить больше внимания типам объектов. Когда известны типы объектов, компилятор может правильно обрабатывать выражения, тогда как в противном случае программисту пришлось бы задавать действия с мучительными подробностями. Знание типов объектов также позволяет компилятору обнаруживать ошибки, которые в противном случае остались бы до тестирования. Заметьте, что использование системы типов для того, чтобы получить проверку параметров функций, защитить данные от случайного искажения, задать новые операции и т.д., само по себе не увеличивает расходов по времени выполнения и памяти.
Особое внимание, уделенное при разработке С++ структуре, отразилось на возрастании масштаба программ, написанных со времени разработки C. Маленькую программу (меньше 1000 строк) вы можете заставить работать с помощью грубой силы, даже нарушая все правила хорошего стиля. Для программ больших размеров это не совсем так. Если программа в 10 000 строк имеет плохую структуру, то вы обнаружите, что новые ошибки появляются так же быстро, как удаляются старые. С++ был разработан так, чтобы дать возможность разумным образом структурировать большие программы таким образом, чтобы для одного человека не было непомерным справляться с программами в 25 000 строк. Существуют программы гораздо больших размеров, однако те, которые работают, в целом, как оказывается, состоят из большого числа почти независимых частей, размер каждой из которых намного ниже указанных пределов. Естественно, сложность написания и поддержки программы зависит от сложности разработки, а не просто от числа строк текста программы, так что точные цифры, с помощью которых были выражены предыдущие соображения, не следует воспринимать слишком серьезно.
Не каждая часть программы, однако, может быть хорошо структурирована, независима от аппаратного обеспечения, легко читаема и т.п. С++ обладает возможностями, предназначенными для того, чтобы непосредственно и эффективно работать с аппаратными средствами, не заботясь о безопасности или простоте понимания. Он также имеет возможности, позволяющие скрывать такие программы за элегантными и надежными интерфейсами.
В этой книге особый акцент делается на методах создания универсальных средств, полезных типов, библиотек и т.д. Эти средства пригодятся как тем программистам, которые пишут небольшие программы, так и тем, которые пишут большие. Кроме того, поскольку все нетривиальные программы состоят из большого числа полунезависимых частей, методы написания таких частей пригодятся и системным, и прикладным программистам.
У кого-то может появиться подозрение, что спецификация программы с помощью более подробной системы типов приведет к увеличению исходных текстов программы. В С++ это не так. С++ программа, описывающая типы параметров функций, использующая классы и т.д., обычно немного короче эквивалентной C программы, в которой эти средства не используются.
объявлений структуры | Документы Microsoft
- 4 минуты на чтение
В этой статье
«Объявление структуры» именует тип и определяет последовательность значений переменных (называемых «членами» или «полями» структуры), которые могут иметь разные типы. Необязательный идентификатор, называемый «тегом», дает имя типа структуры и может использоваться в последующих ссылках на тип структуры.Переменная этого структурного типа содержит всю последовательность, определенную этим типом. Структуры в C похожи на типы, известные как «записи» в других языках.
Синтаксис
спецификатор структуры или объединения :
структура или объединение идентификатор opt { список деклараций структуры }
структура или объединение идентификатор
структура или объединение :
структура
объединение
список-декларации структуры :
декларации структуры
список декларации структуры декларации структуры
декларация структуры :
список спецификаторов спецификаторов список деклараторов структуры ;
спецификатор-квалификатор-список :
-спецификатор-тип спецификатор-квалификатор-список opt
тип-квалификатор спецификатор-квалификатор-список opt
список деклараторов структуры :
список деклараторов структуры список деклараторов структуры , декларатор структуры
структура-декларатор :
декларатор
спецификатор типа декларатор opt : константное выражение
В объявлении типа структуры не выделяется место для структуры.Это всего лишь шаблон для последующего объявления структурных переменных.
Ранее определенный идентификатор (тег) может использоваться для ссылки на тип структуры, определенный в другом месте. В этом случае список-деклараций-структур не может быть повторен, пока определение является видимым. Объявления указателей на структуры и определения типов для типов структур могут использовать тег структуры до определения типа структуры. Однако определение структуры должно быть встречено до любого фактического использования размера полей.Это неполное определение типа и тега типа. Чтобы это определение было завершено, определение типа должно появиться позже в той же области.
Список-декларации-структуры определяет типы и имена элементов структуры. Аргумент список-деклараций-структур содержит одно или несколько объявлений переменных или битовых полей.
Каждая переменная, объявленная в список-декларации-структуры , определяется как член типа структуры. Объявления переменных в списке struct-Declaration-List имеют ту же форму, что и другие объявления переменных, обсуждаемые в этом разделе, за исключением того, что объявления не могут содержать спецификаторы или инициализаторы класса хранения.Члены структуры могут иметь любые типы переменных, кроме типа void
, неполного типа или типа функции.
Нельзя объявить член имеющим тот тип структуры, в которой он появляется. Однако член может быть объявлен как указатель на тип структуры, в которой он появляется, если этот тип структуры имеет тег. Это позволяет создавать связанные списки структур.
Структуры имеют ту же область видимости, что и другие идентификаторы. Идентификаторы структуры должны отличаться от других тегов структуры, объединения и перечисления с такой же видимостью.
Каждая декларация структуры в списке декларации структуры должна быть уникальной в пределах списка. Однако имена идентификаторов в списке декларации структуры не обязательно должны отличаться от обычных имен переменных или идентификаторов в других списках деклараций структуры.
К вложенным структурам также можно обращаться, как если бы они были объявлены на уровне файловой области. Например, с учетом этого объявления:
структура
{
int x;
структура b
{
int y;
} var2;
} var1;
обе эти декларации являются законными:
struct a var3;
struct b var4;
Примеры
Эти примеры иллюстрируют объявления структур:
struct employee / * Определяет структурную переменную с именем temp * /
{
имя символа [20];
int id;
длинный класс;
} темп;
Структура сотрудника
состоит из трех членов: name
, id
и class
.Элемент name
представляет собой массив из 20 элементов, а id
и class
являются простыми элементами с типом int
и long
, соответственно. Идентификатор сотрудника
является структурным идентификатором.
структурный сотрудник студент, профессорско-преподавательский состав, персонал;
В этом примере определены три структурные переменные: студент
, преподаватель
и персонал
. Каждая структура имеет одинаковый список из трех членов.Объявляется, что члены имеют тип структуры сотрудник
, определенный в предыдущем примере.
struct / * Определяет анонимную структуру и * /
{/ * структурная переменная с именем комплекс * /
float x, y;
} сложный;
Структура комплекса
состоит из двух элементов с плавающей точкой
, x
и y
. Тип структуры не имеет тега и поэтому является безымянным или анонимным.
struct sample / * Определяет структуру с именем x * /
{
char c;
float * pf;
struct sample * next;
} Икс;
Первые два члена структуры — это переменная char,
и указатель на значение с плавающей запятой
.Третий член, следующий за
, объявлен как указатель на определяемый тип структуры ( образец
).
Анонимные структуры могут быть полезны, когда указанный тег не нужен. Это тот случай, когда одно объявление определяет все экземпляры структуры. Например:
структура
{
int x;
int y;
} mystruct;
Встроенные структуры часто анонимны.
struct somestruct
{
struct / * анонимная структура * /
{
int x, y;
} точка;
тип int;
} w;
Специально для Microsoft
Компилятор допускает использование массива без размера или нулевого размера в качестве последнего члена структуры.Это может быть полезно, если размер постоянного массива отличается при использовании в различных ситуациях. Объявление такой структуры выглядит так:
struct
идентификатор { набор объявлений тип имя-массива []; };
Массивы без размера могут появляться только как последний член структуры. Структуры, содержащие объявления массивов без размера, могут быть вложены в другие структуры до тех пор, пока никакие другие члены не объявлены ни в одной из включающих структур.Массивы таких структур не допускаются. Оператор sizeof
, когда применяется к переменной этого типа или к самому типу, предполагает 0 для размера массива.
Объявления структуры также могут быть указаны без декларатора, если они являются членами другой структуры или объединения. Имена полей продвигаются во вложенную структуру. Например, безымянная структура выглядит так:
структур
{
float y;
структура
{
int a, b, c;
};
char str [10];
} * p_s;
..
.
p_s-> b = 100; / * Ссылка на поле в структуре s * /
Информацию о ссылках на структуры см. В разделе «Структура и члены союза».
END Спецификация Microsoft
См. Также
Деклараторы и объявления переменных
Почему мы должны так часто вводить структуру в C?
Оказывается, есть плюсы и минусы. Полезным источником информации является основополагающая книга «Экспертное программирование на языке Си» (глава 3).Вкратце, в C у вас есть несколько пространств имен: теги , типы, имена членов и идентификаторы . typedef
вводит псевдоним для типа и находит его в пространстве имен тегов. А именно
typedef struct Tag {
... участники ...
}Тип;
определяет две вещи. Один тег в пространстве имен тегов и один тип в пространстве имен типов. Таким образом, вы можете использовать как Type myType
, так и struct Tag myTagType
. Объявления типа struct Type myType
или Tag myTagType
являются недопустимыми.Кроме того, в объявлении вроде этого:
typedef Тип * Type_ptr;
мы определяем указатель на наш Тип. Итак, если мы объявим:
Type_ptr var1, var2;
struct Tag * myTagType1, myTagType2;
, затем var1
, var2
и myTagType1
— это указатели на Type, а myTagType2
— нет.
В вышеупомянутой книге упоминается, что структуры определения типов не очень полезны, поскольку они только избавляют программиста от написания слова «структура».Однако у меня есть возражение, как и у многих других программистов на C. Хотя иногда это приводит к обфускации некоторых имен (поэтому это не рекомендуется в больших базах кода, таких как ядро), когда вы хотите реализовать полиморфизм в C, это очень помогает найти здесь подробности. Пример:
typedef struct MyWriter_t {
MyPipe super;
MyQueue relative;
uint32_t flags;
...
} MyWriter;
вы можете сделать:
недействителен my_writer_func (MyPipe * s)
{
MyWriter * self = (MyWriter *) s;
uint32_t myFlags = self-> flags;
...
}
Таким образом, вы можете получить доступ к внешнему члену ( flags
) с помощью внутренней структуры ( MyPipe
) посредством приведения. Для меня приведение всего типа менее запутанно, чем выполнение (struct MyWriter_ *) s;
каждый раз, когда вы хотите выполнить такую функцию. В этих случаях краткие ссылки имеют большое значение, особенно если вы активно используете эту технику в своем коде.
Наконец, последний аспект с типами typedef
ed — это невозможность их расширения, в отличие от макросов.Если, например, у вас:
#define X char [10] или
typedef char Y [10]
вы можете затем объявить
без знака X x; но нет
беззнаковый Y y;
На самом деле нас это не волнует для структур, потому что это не относится к спецификаторам хранилища ( volatile
и const
).
ANSI C: История, формирование и структура
Краткая история C
Язык программирования C был разработан в Bell Labs компании AT&T сотрудником по имени Деннис Ричи между 1969 и 1973 годами, когда он работал над операционной системой Unix.Он создал этот язык, используя ALGOL , BCPL и B — языки, которые использовались до создания C. Он добавил много мощных функций в C и использовал его для дальнейшей разработки операционной системы UNIX. Американский национальный институт стандартов (ANSI) в 1983 году сформировал комитет для предоставления исчерпывающего определения языка C и, таким образом, создал новый язык ANSI C с лучшими функциями.
Формирование языка C
Язык C имеет много новых функций и поддерживает структурированное программирование , рекурсию и область видимости лексической переменной , которая ранее отсутствовала в предыдущих языках программирования.Этот язык состоял из следующих функций, которые были добавлены к нему позже при дальнейшей разработке C:
- Включение типа данных long int
- Включение типа данных unsigned int
- Добавление операторов составного присваивания
- Стандартная библиотека ввода / вывода
Это был первый язык программирования, который включил тип void () в свою библиотеку. Было много преимуществ использования языка C для программирования.К основным из них относятся:
- Он имел множество встроенных функций, которые были легко доступны для использования
- Программы были быстрыми и эффективными
- Это очень переносимый язык, а это значит, что написанный однажды код можно запустить на любом компьютере.
- Язык C легко компилируется компиляторами
Структура базовой программы C
Структура языка C состоит из шести важных сегментов. Это раздел документации, раздел ссылок, раздел определений, раздел глобального объявления, функция main () и другие исполняемые функции программы (как показано на рисунке 1).
Давайте разберемся, для чего предназначен каждый из разделов программы на языке C.
- Раздел документации : Эта часть представляет собой своего рода введение в программу, представленную в виде комментариев, которые включают имя программиста и имя программы.
- Раздел ссылок : В этом разделе содержатся инструкции для компилятора по функциям из системной библиотеки.
- Раздел определения : В этом разделе определены все константы.
- Раздел глобального объявления : Здесь объявляются переменные, которые программист использует в программе более одного раза.
- Функция main () : Это самая важная часть программы, поскольку эта функция выполняет все инструкции, определенные в разделе подпрограммы, и генерируется вывод.
- Раздел подпрограмм : Данная программа может иметь отдельные подпрограммы или функции, которые включают в себя инструкции определенного типа, такие как сложение или умножение двух чисел и т. Д., и эта инструкция выполняется в функции main () для вывода.
Идентификаторы, используемые в языке C
Идентификатор на языке C — это такая сущность, как переменная, массив, функция, структура или объединение. По сути, это часть языка, состоящая из букв и цифр и определяемая пользователем или программистом, пишущим код. Для создания идентификатора важны следующие правила:
- Он должен начинаться с алфавита или символа подчеркивания ‘_’
- Может состоять из цифр от 0 до 9
- Он может использовать специальный символ подчеркивания ‘_’ в середине
- Может использовать как строчные, так и прописные буквы
Например, Variable_x1 может использоваться в качестве идентификатора, поскольку он состоит из буквенно-цифрового символа , а также знака подчеркивания .
Функция main ()
Функция в языке C определяется как группа операторов, которые выполняются вместе для выполнения определенной задачи. Функция main () аналогична любой другой функции языка C. Единственное различие между другими функциями и функцией main () состоит в том, что она вызывается операционной системой всякий раз, когда программа компилируется, и это первый код, который выполняется в программе на языке C.
Всякий раз, когда программа запускается, операционная система передает управление компьютером программе, чтобы выполнить содержащиеся в ней инструкции.В случае языка C управление передается программе для выполнения операторов, определенных в функции main (). Таким образом, эта функция чрезвычайно важна в программе на языке C.
Краткое содержание урока
Язык программирования C был разработан Деннисом Ритчи в конце 1960-х годов, а затем он был стандартизирован ANSI с добавлением дополнительных функций. Язык C — это быстродействующий, переносимый и простой в использовании язык. Он состоит из идентификаторов , которые являются ничем иным, как объектами, такими как массив , переменная , структура или объединение , названные с использованием буквенно-цифровых символов со знаком подчеркивания или без него.Язык C имеет много новых функций и поддерживает структурированное программирование , рекурсию и область видимости лексической переменной . Это также был первый язык программирования, который включал функцию void () . Базовая структура программы C состоит из различных разделов, таких как раздел документации , раздел ссылок , раздел определения , раздел глобального объявления , функция main () и другие функции ( разделы подпрограммы ).Функция main () сначала выполняется в программе на языке C, то есть она вызывается операционной системой , и управление компьютером передается этой функции для выполнения инструкций.
Плюсы и минусы создания C Corp
Отличный способ создания правовой защиты вашего бизнеса — это его включение. Многие люди регистрируются, чтобы получить ограниченную ответственность для защиты личных активов от обязательств компании, таких как судебные иски или кредиторы.Регистрация также может снизить налоги на бизнес, если он приносит большой доход, упростить поиск венчурного капитала или других внешних инвестиций, а в некоторых случаях обеспечивает большую гибкость для вашего бизнеса.
Для целей федерального подоходного налога корпорации регулируются Налоговым кодексом, и существуют различные типы корпоративных структур, которые следует учитывать. Основной тип американских корпораций регулируется подразделом C Налогового кодекса США, поэтому они называются корпорациями C.Корпорации S начинаются как корпорации C, но делают особый выбор налогообложения, чтобы налог на прибыль, вычеты и т. Д. Облагались налогом непосредственно акционерам (корпорации S регулируются подразделом S).
С юридической точки зрения корпорации C — это отдельные лица, которые могут возбуждать судебные иски. С налоговой точки зрения, они являются отдельными налогоплательщиками, уплачивающими налог по специальным ставкам корпоративного налога, которые отличаются от ставок, применяемых к физическим лицам. Независимо от того, ведете ли вы бизнес самостоятельно или с одним или несколькими другими совладельцами и хотите создать корпорацию C, обязательно выполните определенные юридические и практические шаги, которые помогут обеспечить успех.
В следующих разделах будет рассмотрено, что такое корпорация C, плюсы и минусы структурирования вашего бизнеса как корпорации C, и как создать корпорацию C.
Dig Deeper: как выбрать правильную юридическую структуру
Среди различных типов бизнес-структур, доступных в США, почти все более крупные корпорации с более чем 100 акционерами и практически все публично торгуемые компании являются корпорациями C. Все компании, которые рассматривают возможность выхода на биржу, поиска венчурного капитала или привлечения инвесторов в акционерный капитал, также обычно являются C-корпорациями.Однако это не означает, что малому бизнесу или индивидуальному предпринимателю запрещено становиться корпорацией C.
«Корпорация AC может состоять из одного человека, любого человека старше совершеннолетия. Нет никаких ограничений», — говорит Клифф Эннико, адвокат и обозреватель национального синдицированного малого бизнеса и автор книги Small Business Survival Guide (Adams Media 2005). . «Закон признает, что вы можете создать корпорацию с единственной целью — ограничить вашу личную ответственность по коммерческим долгам, соглашениям и судебным искам, и, если вы следуете правилам, касающимся корпораций, она должна быть там, чтобы защищать вас.»
Однако многие малые предприятия предпочитают начинать с общества с ограниченной ответственностью (LLC) или корпорации S. Есть несколько причин. LLC не требуют официальных встреч и, как правило, требуют меньше бумажной работы. И LLC, и S-корпорации являются «сквозными» организациями для целей налогообложения, что означает, что бизнес не облагается налогом, но прибыль или убытки переходят к акционерам и включаются в индивидуальные налоговые декларации. Это важно, если бизнес не зарабатывает много деньги или понесет убыток, потому что физические лица могут отнести эти убытки к прочему доходу в своих налоговых декларациях.По словам Барбары Велтман, налогового и коммерческого юриста и автора таких книг, как J.K. Налоги на малый бизнес Лассера (Wiley 2009).
Большинство стартапов сначала регистрируются как корпорация LLC или S, потому что они всегда могут подать заявку, чтобы стать корпорацией C позднее. «Очень часто люди создают S-корпорацию в первые годы своего бизнеса, когда они теряют деньги, так что убытки перетекают к владельцам.Затем, как только бизнес становится прибыльным, они переключают его на корпорацию C, чтобы укрыть часть прибыли от налогов », — говорит Эннико. Однако, когда корпорация S становится корпорацией C, ей, возможно, придется подождать несколько лет, прежде чем она может снова выбрать налог как корпорация S. Кроме того, Эннико отмечает, что может быть чрезвычайно сложно преобразовать корпорацию C в LLC без неблагоприятных налоговых последствий.
Dig Deeper: поиск идеальной формы
Преимущества использования формата корпорации C
По словам Велтмана, существует несколько ключевых причин для создания корпорации C в отличие от других бизнес-структур.К ним относятся следующие:
- Возможность использовать план медицинского возмещения. «Это позволяет корпорации вычитать все медицинские платежи до фиксированной суммы в долларах (установленной корпорацией, а не налоговым законодательством), в то время как акционеры-сотрудники пользуются этой льготой на безналоговой основе», — говорит Велтман.
- Потребность в венчурном капитале. Компания, нуждающаяся в значительном стартовом капитале и / или капитале для расширения (более 5 миллионов долларов), может обратиться за помощью к венчурным капиталистам.«Обычно такие финансисты заинтересованы в предоставлении денег предприятиям, организованным как корпорации типа C, потому что существует большая гибкость при заключении соглашений о собственности», — добавляет Велтман.
- Намерение сделать компанию публичной. Если есть потенциал для роста бизнеса до такого уровня, что он может привлечь финансирование, став публичной компанией, торгуемой на национальной бирже (например, Нью-Йоркской фондовой бирже), бизнес должен быть корпорацией C, говорит Велтман.
- Налоговые соображения: Помимо возможности для сотрудников-акционеров получить дополнительные льготы, не облагаемые налогом, есть еще одно ключевое налоговое преимущество для корпораций C: возможность накапливать прибыль для будущего расширения с более низкими налоговыми затратами, чем у других типов организаций.
Dig Deeper: крайние преимущества создания C Corp
Недостатки использования формата C Corporation
Существует также несколько причин, которые выступают против создания корпорации C, если ваш бизнес имеет возможность сформировать под другим легальная структура.К ним относятся следующие:
- Возможность «двойного налогообложения». Главный недостаток корпорации C — это возможность так называемого «двойного налогообложения». «Прибыль сначала облагается налогом в пользу корпорации», — говорит Велтман. «Затем, когда они распределяются среди акционеров в виде дивидендов, они снова облагаются налогом; корпорация не может вычитать выплаты дивидендов». Однако угрозу двойного налогообложения иногда можно уменьшить, следуя определенным стратегиям.
- Требование о подаче дополнительных документов. Корпорации обязаны проводить официальные собрания совета директоров и акционеров и вести точные протоколы этих собраний. Кроме того, существует ряд налоговых форм, которые, возможно, потребуется заполнить федеральным, государственным и даже местным должностным лицам, включая корпоративные налоги (форма IRS 1120), налоги на заработную плату и другие выплаты сотрудникам (W-2) и прибыль. распределение среди акционеров (Форма 1099-DIV). «Корпорация C усложняет вашу жизнь», — говорит Эннико. «Большинство предпринимателей, с которыми я работаю, хотят тратить свое время на изготовление или продажу своей продукции.Они не хотят ложиться спать до трех часов ночи, занимаясь оформлением документов «.
- Для заполнения корпоративных налоговых форм может потребоваться бухгалтер. Налоговые формы для корпораций могут быть сложными, и вам может потребоваться помощь бухгалтера. Кроме того, корпорации должны уплатить федеральные налоги до 15 марта — за полный месяц до крайнего срока подачи индивидуальной федеральной налоговой декларации.
Копайте глубже: проблема двойного налогообложения
Как создать корпорацию C
Когда у вас появляется идея для компании, означает ли это продажа продукта или услуги, и вы решаете ее сформулировать Как корпорация C будьте готовы уделять время, использовать методы ведения бизнеса и правильно настроиться, чтобы вы могли зарабатывать больше денег, минимизировать налоги и в целом избегать потенциальных проблем.
1. Выберите штат, в котором будет создана ваша корпорация C.
Корпорация C является порождением закона штата. Он формируется в соответствии с законодательством штата в соответствии с правилами каждого штата. Вы можете выполнить все этапы настройки самостоятельно или воспользоваться услугами юриста. В любом случае существуют государственные пошлины за регистрацию, которые могут варьироваться от 50 до 500 долларов в зависимости от закона штата.
Обычно рекомендуется создавать корпорацию в том штате, в котором вы находитесь, а не в другом штате, законы которого считаются более благоприятными для корпораций, например, Делавэр или Невада.Для небольшой корпорации создание и деятельность в одном штате менее затратно, что позволяет избежать необходимости регистрироваться для ведения бизнеса и, в некоторых случаях, платить дополнительные налоги в нескольких штатах. «Если вы создаете корпорацию в Делавэре или Неваде, но на самом деле не ведете там бизнес, вам нужно будет зарегистрировать свою корпорацию как« иностранную корпорацию »в том штате, где вы фактически, физически находитесь, и платить налоги там», — предупреждает Эннико. , добавив, что «если вы этого не сделаете, вас будут рассматривать как ведущего незаконный бизнес в вашем штате, и это будет лишь вопросом времени, когда вы получите неприятное письмо от налогового органа штата, в котором вас приглашают приехать на чат.»
2. Решите, регистрироваться ли самостоятельно или получить помощь.
В наши дни существует множество юридических веб-сайтов, которые позволяют вам самостоятельно регистрировать бизнес через Интернет. Плата за эти услуги составляет менее 100 долларов США. до почти 500 долларов за инструкции, формы и иногда компакт-диски. Эти услуги включают такие сайты, как LegalZoom, The Company Corporation и BizFilings.com, среди других услуг. «Некоторые из них неплохие. Они, как правило, хорошо выполняют самые важные шаги при регистрации бизнеса, такие как заполнение свидетельства о регистрации и получение вашего федерального налогового идентификационного номера (EIN) в IRS », — говорит Эннико.Но Эннико предупреждает, что «ни один из сайтов самостоятельной регистрации, с которыми я знаком, не выполняет все шаги, такие как регистрация вашей корпорации для государственных продаж, выплаты заработной платы и других важных налогов. Лучшие веб-сайты подскажут вам, куда идти. выполните эти шаги, но они предоставят вам право закончить работу. Если вы не достаточно дисциплинированы, чтобы довести дело до конца, возможно, вы не завершили процесс включения, и это может вызвать проблемы для вас в будущем ».
Эннико советует предприятиям нанять юриста или CPA, чтобы помочь им сформировать корпорацию C.Стоимость, по его словам, обычно колеблется от 1000 до 2000 долларов, и это хорошая идея, потому что «так вы будете знать, что работа будет выполнена на 100% правильно, а если это не так, у вас есть кто-то, на кого можно подать в суд. за любой ущерб, который вы можете понести. В последний раз, когда я смотрел, вы не можете предъявить иск самому себе за свою халатность «.
3. Напишите учредительные документы.
Учредительный договор действует как устав для создания корпорации. «Это похоже на свидетельство о рождении корпорации», — говорит Эннико.«Это будет публичным документом». По словам Велтмана, каждое государство диктует, что должно быть включено для создания корпорации в этой юрисдикции. Некоторые штаты требуют подачи нескольких документов в разное время, поэтому обязательно ознакомьтесь с правилами своего штата. Обычно, говорит Велтман, информация должна включать в себя следующее:
- Название и юридический адрес корпорации. Корпорации необходимо название для описания бизнеса. «Название не может быть таким, которое путает компанию с другим бизнесом, и не может быть таким, которое запрещено законом штата — например, непристойным», — говорит Велтман.Вы также хотите согласовать свое корпоративное имя с доменным именем, если планируете создать веб-сайт. После названия вашей компании должно быть указано аббревиатура, обозначающая корпорацию, зарегистрированная или ограниченная (corp., Inc. Или ltd.). Например, если вы начинаете свой бизнес по благоустройству территории, ваше корпоративное название может быть Lush Landscapers, Inc. (при условии, что это название еще не используется в вашем штате).
- Характер деятельности корпорации. Это может быть общее описание ведения любой законной коммерческой деятельности или оно может быть ограничено конкретным видом деятельности.
- Обозначение зарегистрированного агента в большинстве штатов. Это лицо, уполномоченное получать юридические уведомления от государства или третьих лиц, например, от службы судебного разбирательства, чтобы начать судебный процесс, говорит Велтман. Зарегистрированный агент может быть корпоративным должностным лицом или профессиональным зарегистрированным агентом.
- Информация о наличии. Сюда входит количество разрешенных к выпуску первичных акций, наличие более одного класса акций и стоимость каждой акции.
В учредительном документе указывается учредитель, который является лицом или компанией, ответственными за заполнение необходимых форм в государстве, говорит Велтман. В учредительном договоре также могут быть указаны первоначальные директора корпорации — люди, берущие контроль после ее создания, добавляет она.
4. Напишите подзаконные акты и акционерное соглашение.
Для управления корпорацией должны существовать подзаконные акты и другие письменные инструкции в соответствии с законодательством штата, в котором вы зарегистрированы, и в соответствии с надлежащей деловой практикой.
Подзаконные акты — это регулирующие правила для корпорации. «Они существуют до тех пор, пока существует корпорация, хотя могут и обычно изменяются время от времени», — говорит Велтман. Закон штата может содержать множество требуемых правил; корпорации могут в некоторых случаях создавать свои собственные правила. Велтман советует включить в подзаконные акты такую информацию, как:
- Время и место собраний должностных лиц, директоров и акционеров.
- Сколько будет директоров и как долго они будут работать (это может быть предписано законом штата).
- Вознаграждение офицеров (которое может время от времени изменяться).
- Бизнес-год корпорации (в некоторых случаях это может быть календарный год или финансовый год).
- Правила принятия и изменения подзаконных актов.
- Правила утверждения контрактов, займов и других действий корпорации (например, может ли должностное лицо действовать от имени корпорации или должно быть соглашение между акционерами).
- Место для проверки корпоративной документации.
«Также рекомендуется заключить акционерное соглашение — также называемое соглашениями о купле-продаже или выкупе — чтобы указать, что происходит с долями собственности в случае смерти, потери трудоспособности, выхода на пенсию, банкротства или других непредвиденных обстоятельств с участием акционера, «Weltman говорит. «Например, будут ли акции умершего акционера выкуплены (« выкуплены ») корпорацией или выкуплены оставшимися акционерами?»
Корпорация C является отдельным налогоплательщиком для целей федерального подоходного налога.Он подает декларацию IRS Form 1120, чтобы сообщить о своих доходах и расходах. Для корпораций существует отдельная шкала налоговых ставок: от 15 до 35 процентов.
Акционеры корпораций C платят налог только в том случае, если и в той мере, в какой они получают выплаты от корпорации, говорит Велтман. Эти распределения могут включать:
- Заработная плата и бонусы. Они облагаются налогом для сотрудников-акционеров по ставке личного налога. Платежи также облагаются налогами на заработную плату, включая налоги на социальное обеспечение и медицинское обслуживание, FICA, которые выплачиваются как корпорацией, так и акционером-сотрудником.Компенсация и доля корпорации в налогах на заработную плату полностью вычитаются корпорацией.
- Дивиденды. Они облагаются налогом для акционеров по максимальной ставке 15 процентов (эта ставка может быть увеличена в будущем для акционеров с более высоким доходом). Корпорация не может вычесть эти платежи, но они освобождены от налога на заработную плату.
- Дополнительные льготы. Многие из них не облагаются налогом для акционеров. Если предположить, что льготы соответствуют требованиям налогового законодательства (обычно они должны предоставляться всем сотрудникам на недискриминационной основе, а не только сотрудникам-акционерам), то корпорация может их вычесть, и в большинстве случаев льготы освобождаются от налога на заработную плату, Велтман говорит.
Также могут взиматься подоходные налоги на уровне штата с корпораций C в штатах, в которых они ведут бизнес. Обычно для ведения бизнеса в штате требуется минимальный платеж; это иногда называют «налогом на франшизу», даже если франшиза не используется.
6. Обратитесь к другим деталям.
Перед тем, как приступить к работе, обязательно решите различные другие деловые вопросы:
- O Получите федеральный идентификационный номер работодателя. Новая корпорация C должна получить федеральный идентификационный номер работодателя (EIN). Получить EIN можно мгновенно и бесплатно от IRS. Любое главное должностное лицо, например президент корпорации, может сделать это от имени корпорации.
- Уплатить прочие налоги. Обратитесь в налоговую службу своего штата, чтобы узнать о налогах с продаж, использовании, заработной платы и других налогах, которые могут применяться к бизнесу корпорации. От корпорации может потребоваться взимать налог с продаж на проданные товары и услуги и передавать сборы государству, а также отчитываться о сборах в налоговых декларациях.Чтобы найти веб-сайт налоговой службы вашего штата, перейдите на этот веб-сайт. Оказавшись там, нажмите ссылку «Формы и публикации» и загрузите форму, которую компании должны подавать для регистрации для уплаты государственных налогов. Некоторые города и муниципалитеты также требуют, чтобы вы регистрировались для уплаты налогов — посоветуйтесь с местным бухгалтером, чтобы убедиться, что вы не пропустили ни одну налоговую юрисдикцию, в которой расположена ваша корпорация.
- Получение лицензий и разрешений. В зависимости от типа вашего бизнеса от корпорации и / или каждого сотрудника-владельца может потребоваться лицензия или разрешение на ведение деятельности на законных основаниях.
- Получите страховку. В то время как корпорация обеспечивает защиту личной ответственности акционеров, для защиты бизнес-активов убедитесь, что у нее имеется соответствующая страховка на случай непредвиденных обстоятельств. Обсудите эти и другие виды защиты со страховым агентом.
Границы | Взаимосвязь между структурой и функцией С-реактивного белка при бактериальной инфекции
Введение
C-реактивный белок (CRP) — это многофункциональная молекула врожденной иммунной системы человека (1–4).CRP представляет собой циклический пентамерный белок, состоящий из пяти идентичных нековалентно связанных субъединиц. Каждая субъединица имеет внутридисульфидную связь, а молекулярная масса каждой субъединицы составляет ~ 23 кДа (5, 6). Сайт связывания фосфохолина (PCh) расположен на одной и той же стороне каждой субъединицы в гомопентамере. Аминокислоты Phe 66 , Thr 76 и Glu 81 в CRP имеют решающее значение для образования сайта связывания PCh (7–9). Как только CRP образует комплекс с веществом с открытой группой PCh, комплекс активирует систему комплемента классическим путем (10–12).
Streptococcus pneumoniae — грамположительные бактерии, бессимптомно колонизирующие верхние дыхательные пути (1, 13–15). Это наиболее распространенная бактерия, вызывающая внебольничную пневмонию, а также серьезную причину сепсиса и менингита (1, 13–15). Системная пневмококковая инфекция повышает уровень СРБ в сыворотке крови у людей в несколько сотен раз как часть реакции острой фазы (16–18). CRP связывается с пневмококками посредством Ca 2+ -зависимого взаимодействия с остатками PCh, присутствующими на C-полисахариде (PnC) клеточной стенки пневмококка (19, 20).Однако у мышей CRP является лишь второстепенным белком острой фазы; Таким образом, мыши были полезны для исследования функций человеческого CRP in vivo (21).
На мышиных моделях пневмококковой инфекции было показано, что пассивно вводимый человеческий CRP защищает от летальной пневмококковой инфекции, то есть CRP снижает бактериемию и увеличивает выживаемость инфицированных мышей (1, 22–26). Мыши с дефицитом CRP более восприимчивы к пневмококковой инфекции, чем мыши дикого типа, что указывает на то, что следовые уровни эндогенного CRP мыши способны выполнять антипневмококковые функции (27).Мыши, трансгенные по человеческому CRP, также защищены от инфекции S. pneumoniae (28). Однако механизм антипневмококкового действия CRP у мышей неизвестен.
Текущие исследования по определению механизма антипневмококкового действия CRP были основаны на ключевом открытии, сделанном несколько десятилетий назад с использованием пассивного введения очищенного человеческого CRP мышам (29). СРБ оказывал защитное действие при введении мышам за 6 ч до или через 2 ч после введения пневмококков.СРБ не оказывал защитного действия, когда мыши получали СРБ через 24 часа после заражения, что позволяет предположить, что СРБ защищает на ранних стадиях инфекции, но не на поздних стадиях. Считается, что для защиты на ранней стадии механизм действия CRP включает способность CRP связываться с пневмококками через группы PCh, присутствующие на их поверхности, и последующую активацию классического пути комплемента с помощью связанного с патогеном CRP. Очевидно, что этот механизм не работает на поздних стадиях инфекции. Был предложен независимый от PCh механизм антипневмококковой функции CRP вместе с объяснением неспособности CRP защищать от поздней стадии инфекции (1, 24–26).В этой статье мы рассматриваем PCh-зависимые, PCh-независимые и другие предложенные механизмы антипневмококковой функции CRP во время как ранней стадии инфекции (когда CRP и пневмококки вводят мышам с интервалом 30 минут), так и поздней стадии инфекции (когда СРБ и пневмококки вводят мышам с интервалом 24 часа).
ПЧ-зависимая антипневмококковая функция CRP
Эксперименты in vivo с использованием мутанта CRP, неспособного связываться с PCh, PnC и целыми пневмококками, дали результаты, показывающие, что CRP-опосредованная защита мышей от инфекции не зависит от связывания CRP с PCh; мутант CRP был так же эффективен, как CRP дикого типа в защите мышей от инфекции на ранней стадии (26).Однако механизм связывания PCh действительно способствует защите мышей на ранней стадии инфекции (25, 26). PCh-зависимый механизм способствует начальному и немедленному избавлению от пневмококков, как было показано с использованием различных моделей инфекции на мышах (26, 27). В целом, объединенные данные предполагают, что как PCh-зависимые, так и PCh-независимые механизмы действуют в защите мышей от ранних стадий инфекции, хотя PCh-зависимый механизм не является необходимым (25, 26).
Косвенные доказательства были представлены, чтобы показать важность PCh-связывающего свойства CRP и последующей активации комплемента CRP-комплексами для защиты от инфекции. Было показано, что CRP связывается с грамотрицательным бактериальным липополисахаридом (LPS), если LPS модифицируется путем добавления к нему нескольких остатков PCh. Связывание CRP с ЛПС, модифицированным PCh, увеличивается в зависимости от количества добавленных остатков PCh и впоследствии влияет на устойчивость организма к убивающему эффекту сыворотки (30).Также известно, что поверхностный белок пневмококка PspA, который является холин-связывающим белком, связывается с PCh. Таким образом, PspA конкурирует и ингибирует связывание CRP с PCh на пневмококках и снижает активацию комплемента (31). Точно так же пневмококки, растущие в виде биопленки, авирулентны из-за снижения продукции PnC, хотя с увеличением экспрессии PCh, вмешательством со стороны пневмококкового поверхностного белка PspC, снижением связывания C1q с комплексами CRP-PCh и последующей неспособностью активировать комплемент (32, 33).Формирование биопленки у S. pneumoniae является эффективным средством уклонения от атаки комплемента (33).
Одно исследование показало, что свойство CRP активировать классический путь комплемента в сыворотке крови человека не имеет отношения к защитной функции CRP у мышей, инфицированных S. pneumoniae , потому что человеческий CRP не активирует мышиный комплемент классическим путем ( 23). Поскольку мыши с дефицитом комплемента не проявляют CRP-опосредованной защиты от пневмококковой инфекции (34), возможно, что CRP-комплексы способны активировать систему комплемента мыши по пути, отличному от классического (1, 23).Было высказано предположение, что CRP-комплексы человека способны активировать лектиновый путь в сыворотке мышей и способны активировать как классический, так и лектиновый пути в сыворотке крови человека (23). Было показано, что CRP взаимодействует как с L-фиколином, так и с M-фиколином и активирует лектиновый путь комплемента (35–39). Взаимодействие между CRP и L-фиколином увеличивается в 100 раз в условиях легкого ацидоза и пониженного уровня кальция, а также было показано, что перекрестное взаимодействие между CRP и L-фиколином опосредует уничтожение Pseudomonas aeruginosa в плазме ( 37).L-фиколин также распознает PCh на штаммах пневмококков и запускает активацию пути комплемента лектина (40). Лектин-подобный рецептор окисленного LDL, LOX-1, также может распознавать CRP и участвовать в CRP-зависимой активации комплемента (41, 42). СРБ является основным белком гемолимфы подковообразного краба Carcinoscorpius rotundicauda . Когда CRP находится в гемолимфе, он связывается с рядом бактерий через белок, связывающий галактозу, и фиколин. Соответственно, было высказано предположение, что CRP действует не один, а взаимодействует с другими лектинами плазмы с образованием стабильных комплексов распознавания патогенов при нацеливании на широкий круг бактерий для разрушения (35).
ПЧ-независимая антипневмококковая функция CRP
Фактор H, регулятор активации комплемента, участвует в устойчивости пневмококков к атаке комплемента (43, 44). Фактор H защищает от атаки комплемента, ингибируя активацию альтернативного пути на клетках-хозяевах и на тех патогенных поверхностях, которые способны рекрутировать фактор H из плазмы. На клетках-хозяевах фактор H связывается с полианионными структурами и гликопротеинами, обнаруженными на поверхности клетки (45).На S. pneumoniae фактор H связывается с поверхностным белком, называемым Hic (фактор-связывающий ингибитор комплемента), который является вариантом PspC (46, 47). Таким образом, пневмококки используют фактор H, чтобы избежать гибели, опосредованной комплементом. Привлечение пневмококками фактора H может быть причиной того, что CRP не защищает мышей от пневмококковых инфекций на поздней стадии инфекции.
CRP не связывается с фактором H в нормальных физиологических условиях (48–52). Условия денатурации CRP позволяют CRP связываться с фактором H (4, 48–51).Например, иммобилизация CRP на поверхности позволяет CRP связываться с фактором H (4, 53, 54). Мономерный CRP (mCRP) также связывается с фактором H Ca 2+ -независимым образом (55). Полиморфизм Y384H фактора H влияет на сродство связывания с mCRP. СРБ сильнее связывается с фактором H-Tyr 384 по сравнению с фактором H-His 384 , который является аллелем риска (56–60). PCh не конкурирует с фактором H за связывание с CRP (52). Было высказано предположение, что когда CRP иммобилизуется на S.pneumoniae , он ограничивает чрезмерную активацию комплемента за счет рекрутирования фактора H (61, 62). Также было показано, что CRP модулирует цитолиз, зависимый от лектинового пути, путем привлечения фактора H (63, 64). Когда CRP связывается с мертвыми клетками, он не привлекает фактор H (55). mCRP также связывается с H-родственными белками (FHR) FHR1 и FHR5 и с H-подобным белком 1 (FHL-1), которые ингибируют последующее рекрутирование фактора H (65–68). Также было показано, что CRP рекрутирует фактор H на другие типы клеток, например, CRP рекрутирует фактор H после связывания с собиранием CL-P1 на поверхности плацентарных клеток (69, 70).В противном случае взаимодействие CRP с CL-P1 активирует классический путь комплемента. Взаимодействие CL-P1 с фактором H может быть ключом к предотвращению самонападения из-за активации комплемента, вызванной взаимодействием CL-P1 и CRP (69, 70).
На основании результатов, полученных в экспериментах, проведенных в определенных условиях (нативный пентамерный CRP не связывается с фактором H, в то время как mCRP связывается с фактором H), было выдвинуто предположение, что ненативный пентамерный CRP также может связываться с фактором H (48 ).В самом деле, нативная пентамерная структура CRP может быть модифицирована in vitro для создания ненативного пентамерного CRP, способного связываться с фактором H (2, 48-50). Поскольку ненативный CRP и Hic могут связываться с фактором H одновременно, возможно, что ненативный CRP может связываться с пневмококками, покрытыми фактором H, покрывать комплекс фактора H-Hic, образованный на бактериях, и, таким образом, устранять репрессивный эффект фактора H. при активации комплемента (71–73). Недавно мутант CRP, способный связываться с иммобилизованным фактором H, был оценен на предмет его способности защищать от пневмококковой инфекции на поздней стадии.Мутант CRP защищал мышей от инфекции независимо от времени введения мышам (71–73). Эти данные позволяют предположить, что независимый от PCh механизм сначала включает структурное изменение CRP, за которым следует взаимодействие между структурно измененным CRP и пневмококками, связанными с фактором H. Как только фактор H на пневмококках связывается со структурно измененным CRP, такие пневмококки могут больше не быть устойчивыми к атаке комплемента (1, 71–73).
Кроме того, коэффициент H, S.pneumoniae также привлекает другой ингибитор комплемента, C4b-связывающий белок (C4BP) через Hic, который также привлекает фактор H (74, 75). Пневмококки также используют другой белок клеточной поверхности, энолазу, для рекрутирования C4BP (75). Привлекая C4BP, пневмококки могут избегать атаки комплемента. Мы предполагаем, что ненативный CRP также может защищать от тех патогенов, которые привлекают C4BP для уклонения от комплемента: ненативный CRP может связываться с пневмококками, покрытыми фактором H / C4BP, а затем с комплексом, образованным CRP, фактором H / C4BP и Hic может активировать лектиновый путь комплемента и вызвать уничтожение пневмококков.Нельзя исключить возможность того, что независимый от PCh механизм может включать связывание ненативного CRP с поверхностными белками пневмококков, поскольку было показано, что CRP взаимодействует с несколькими холин-связывающими белками, обнаруженными на пневмококках в Ca 2+ — независимым образом (76).
CRP как антибактериальная молекула
CRP связывается с несколькими патогенными серотипами S. pneumoniae (77–79) и более активно связывается с теми штаммами, которые содержат PCh как в клеточной стенке, так и в капсульных полисахаридах, например, тип 27 (80).СРБ, как и лектины, также реагирует с полисахаридами, не содержащими PCh, такими как депирувилированный капсульный полисахарид типа IV, полученный из типа 27, в присутствии кальция, и, вероятно, реакция происходит из-за N-ацетилгалактозамина в полисахариде (81– 84). CRP, по-видимому, обладает свойствами опсонина; он вызывает агглютинацию и лизис грамположительных бактерий Staphylococcus aureus, Bacillus subtilis, Streptococcus pyogenes и Streptococcus agalactiae (77, 78).
Антибактериальное действие CRP не ограничивается только грамположительными бактериями. CRP также защищает мышей от ранних стадий инфицирования Salmonella enterica serovar Typhimurium, который является грамотрицательной бактерией и с которой CRP не связывается in vitro (85). Но было показано, что CRP связывается с S. enterica в присутствии сыворотки (35). CRP также связывается с Haemophilus influenzae (86). H. influenzae претерпевает фазовые изменения в экспрессии PCh на внешнем ядре LPS, подвергающемся воздействию клеточной поверхности.PCh-позитивные варианты более чувствительны к бактерицидной активности сыворотки крови человека, которая требует связывания сывороточного CRP с целыми бактериями с последующей активацией комплемента (86–88). Способность H. influenzae изменять экспрессию PCh до нуля может быть связана с его способностью вызывать инвазивную инфекцию, уклоняясь от атаки CRP (86). Мышиные модели инфекции H. influenzae еще не созданы, чтобы определить, защищает ли СРБ от инфекции H.influenzae (27). CRP также связывается с Neisseriae spp . в зависимости от Ca 2+ (89–91). PCh присутствует в LPS нескольких видов комменсала Neisseriae и, как и у H. influenzae, Neisseriae также претерпевает фазовые изменения в экспрессии PCh на их LPS (91). Эксперименты по защите мышей не проводились для Neisseriae с использованием нативного или ненативного пентамерного CRP.
Некоторые эксперименты предполагают роль CRP в защите животных от летальной токсичности LPS, хотя этот предмет вызывает споры (92–96).В гемолимфе подковообразного краба, Carcinoscorpius rotundicauda , СРБ был идентифицирован как главный LPS-связывающий белок при инфекциях, вызванных Pseudomonas aeruginosa (97). СРБ связывается со всеми бактериями, исследованными в гемолимфе подковообразного краба (35). Связывание CRP с LPS является непрямым; третья молекула, называемая галактозосвязывающим белком (GBP), участвует в связывании CRP и LPS (98). При связывании с LPS, GBP взаимодействует с CRP, образуя комплекс распознавания патогенов, который помогает устранить вторгшиеся микробы (35, 98).Объединенные данные повышают вероятность того, что CRP функционирует как общая антибактериальная молекула; CRP может потребовать изменения его пентамерной конформации, а также обратиться за помощью к другим белкам сыворотки для образования комплексов распознавания патогенов.
CRP как противовоспалительная молекула
Нативный пентамерный CRP может диссоциировать на mCRP через промежуточную ненативную пентамерную структуру (50, 99-101). Все три формы, нативная пентамерная, ненативная пентамерная и mCRP проявляют разные функции распознавания лиганда in vitro (2, 102-104).В условиях низкого pH, пониженного уровня кальция и окисления-восстановления CRP превращается в ненативную конформацию, но остается пентамерной (48–50, 105–107). Когда ненативный CRP связывается с лигандом, отличным от PCh, он денатурирует дальше до mCRP. Точно так же, когда CRP связывается с клеточными мембранами, липосомами и микровезикулами клеточного происхождения, он претерпевает структурные изменения, которые включают пространственное разделение мономеров друг от друга без нарушения пентамерной симметрии с образованием CRP в переходном состоянии (108).Механизм, с помощью которого CRP распознает мембранные липиды и связывается Ca 2+ -независимым образом, зависит от комбинации формы белка, липидного состава и формы мембраны (109, 110). Поверхностная иммобилизация CRP генерирует консервируемый промежуточный продукт с двойной антигенной экспрессией как CRP, так и mCRP. Промежуточный продукт проявляет модифицированную биоактивность, такую как высокое сродство с белками в фазе раствора (107). Было показано, что мСРБ, но не СРБ, является основной изоформой, присутствующей в местных воспалительных поражениях (111).Поскольку мСРБ нерастворим, он считается связанной с тканью формой СРБ. Таким образом, промежуточная стадия структуры CRP, по-видимому, отвечает за противовоспалительные функции защиты хозяина CRP in vivo . Структурные изменения in vivo могут превращать CRP в противовоспалительную молекулу, предполагая, что конечный провоспалительный побочный продукт, mCRP, постоянно удаляется. Внутренне неупорядоченная область аминокислотных остатков 35–47 в CRP отвечает за опосредование взаимодействий mCRP с различными лигандами (112), а также, возможно, за опосредование взаимодействий ненативного пентамерного CRP с различными лигандами (48-50). .
Выводы
В то время как нативный СРБ защищает только от инфекции на ранней стадии, ненативный пентамерный СРБ защищает от инфекций как на ранних, так и на поздних стадиях в мышиных моделях пневмококковой инфекции. Поскольку ненативный пентамерный CRP проявляет PCh-независимую антипневмококковую активность, вполне возможно, что CRP функционирует как общая антибактериальная молекула. Таким образом, пентамерный CRP представляет собой противовоспалительную молекулу.
Долгосрочная цель может состоять в том, чтобы сосредоточиться на открытии и разработке низкомолекулярных соединений для нацеливания на СРБ, соединения, которое может изменять структуру эндогенного СРБ, так что структурно измененный СРБ способен связываться с пневмококками, связанными с фактором Н. .Недавнее исследование показало, что инъекции антибиотиков в субингибиторных концентрациях усиливают связывание CRP с тремя устойчивыми к антибиотикам штаммами S. pneumoniae в сыворотке крови и усиливают зависимую от антител активацию комплемента (113). Основываясь на этих выводах, другой целью может быть изучение эффектов комбинаций ненативного пентамерного СРБ с различными антибиотиками в доклинических исследованиях.
Авторские взносы
Все перечисленные авторы внесли существенный, прямой и интеллектуальный вклад в работу и одобрили ее к публикации.
Финансирование
Эта работа была поддержана грантом AI117730 Национального института здравоохранения AA.
Заявление о конфликте интересов
Авторы заявляют, что исследование проводилось при отсутствии каких-либо коммерческих или финансовых отношений, которые могут быть истолкованы как потенциальный конфликт интересов.
Благодарности
Мы благодарны Ирвингу Кушнеру, доктору медицины, за рецензирование рукописи и за его полезные предложения.
Сокращения
CRP, С-реактивный белок; FHR, белок, родственный фактору H; ЛПС, липополисахарид; мСРБ, мономерный СРБ; ПЧ, фосфохолин; PnC, пневмококковый C-полисахарид.
Список литературы
1. Agrawal A, Suresh MV, Singh SK, Ferguson DA Jr. Защитная функция человеческого C-реактивного белка в мышиных моделях инфекции Streptococcus pneumoniae . Цели препарата для лечения иммунных расстройств Endocr Metab (2008) 8: 231–7. DOI: 10.2174 / 187153008786848321
PubMed Аннотация | CrossRef Полный текст | Google Scholar
3. Гарланда С., Боттацци Б., Бастон А., Мантовани А. Пентраксины на перекрестке между врожденным иммунитетом, воспалением, отложением матрикса и женской фертильностью. Annu Rev Immunol. (2005) 23: 337–66. DOI: 10.1146 / annurev.immunol.23.021704.115756
PubMed Аннотация | CrossRef Полный текст | Google Scholar
5. Shrive AK, Cheetham GM, Holden D, Myles DA, Turnell WG, Volanakis JE, et al. Трехмерная структура С-реактивного белка человека. Nat Struct Biol. (1996) 3: 346–54. DOI: 10.1038 / nsb0496-346
PubMed Аннотация | CrossRef Полный текст | Google Scholar
6. Lv JM, Lü SQ, Liu ZP, Zhang J, Gao BX, Yao ZY и др.Конформационное сворачивание и дисульфидное связывание управляют различными стадиями формирования структуры белка. Научный доклад (2018) 8: 1494. DOI: 10.1038 / s41598-018-20014-y
PubMed Аннотация | CrossRef Полный текст | Google Scholar
7. Агравал А., Ли С., Карсон М., Нараяна С.В.Л., Гринхау Т.Дж., Воланакис Дж.Э. Сайт-направленный мутагенез фосфохолин-связывающего сайта человеческого C-реактивного белка: роль Thr 76 и Trp 67 . J Immunol. (1997) 158: 345–50.
PubMed Аннотация | Google Scholar
8. Томпсон Д., Пепис М.Б., Вуд С.П. Физиологическая структура С-реактивного белка человека и его комплекса с фосфохолином. Структура (1999) 7: 169–77. DOI: 10.1016 / S0969-2126 (99) 80023-9
PubMed Аннотация | CrossRef Полный текст | Google Scholar
9. Агравал А., Симпсон М.Дж., Блэк С., Кэри М.П., Самолс Д. Мутант С-реактивного белка, который не связывается с фосфохолином и пневмококковым С-полисахаридом. J Immunol. (2002) 169: 3217–22. DOI: 10.4049 / jimmunol.169.6.3217
CrossRef Полный текст | Google Scholar
10. Каплан MH, Volanakis JE. Взаимодействие С-реактивных белковых комплексов с системой комплемента. I. Потребление человеческого комплемента, связанное с реакцией C-реактивного белка с пневмококковым C-полисахаридом и холинфосфатидами, лецитином и сфингомиелином. J Immunol. (1974) 112: 2135–47.
PubMed Аннотация | Google Scholar
11.Agrawal A, Volanakis JE. Исследование сайта связывания C1q на C-реактивном белке человека с помощью сайт-направленного мутагенеза. J Immunol. (1994) 152: 5404–10.
PubMed Аннотация | Google Scholar
12. Agrawal A, Shrive AK, Greenhough TJ, Volanakis JE. Топология и структура сайта связывания C1q на С-реактивном белке. J. Immunol. (2001) 166: 3998–400. DOI: 10.4049 / jimmunol.166.6.3998
PubMed Аннотация | CrossRef Полный текст | Google Scholar
15.Малли Р., Андерсон П. В.. Серотипнезависимые экспериментальные пневмококковые вакцины, индуцирующие как клеточный, так и гуморальный иммунитет. Proc Natl Acad Sci USA. (2012) 109: 3623–27. DOI: 10.1073 / pnas.1121383109
PubMed Аннотация | CrossRef Полный текст | Google Scholar
19. Абернети Т.Дж., Эйвери ОТ. Возникновение во время острых инфекций белка, обычно не присутствующего в крови: I. Распределение реактивного белка в сыворотке пациентов и влияние кальция на реакцию флокуляции с полисахаридом C пневмококка. J Exp Med. (1941) 73: 173–82.
Google Scholar
20. Volanakis JE, Kaplan MH. Специфичность С-реактивного белка к холинфосфатным остаткам пневмококкового С-полисахарида. Proc Soc Exp Biol Med. (1971) 136: 612–4. DOI: 10.3181 / 00379727-136-35323
PubMed Аннотация | CrossRef Полный текст | Google Scholar
21. Уайтхед А.С., Захеди К., Риц М., Мортенсен Р.Ф., Лелиас Дж. М.. С-реактивный белок мыши: создание клонов кДНК, структурный анализ и индукция мРНК во время воспаления. Biochem J. (1990) 266: 283–90. DOI: 10.1042 / bj2660283
PubMed Аннотация | CrossRef Полный текст | Google Scholar
22. Yother J, Volanakis JE, Briles DE. С-реактивный белок человека защищает мышей от фатальной инфекции Streptococcus pneumoniae . J Immunol. (1982) 128: 2374–6.
PubMed Аннотация | Google Scholar
23. Суреш М.В., Сингх С.К., Фергюсон Д.А. мл., Агравал А. Роль свойства С-реактивного белка активировать классический путь комплемента в защите мышей от пневмококковой инфекции. J Immunol. (2006) 176: 4369–74. DOI: 10.4049 / jimmunol.176.7.4369
PubMed Аннотация | CrossRef Полный текст | Google Scholar
24. Суреш М.В., Сингх С.К., Фергюсон Д.А. мл., Агравал А. Человеческий C-реактивный белок защищает мышей от инфекции Streptococcus pneumoniae , не связываясь с пневмококковым C-полисахаридом. J Immunol. (2007) 178: 1158–63. DOI: 10.4049 / jimmunol.178.2.1158
PubMed Аннотация | CrossRef Полный текст | Google Scholar
25.Gang TB, Хаммонд DJ-младший, Сингх С.К., Фергюсон Д.А. мл., Мишра В.К., Агравал А. Фосфохолин-связывающий карман на С-реактивном белке необходим для начальной защиты мышей от пневмококковой инфекции. J Biol Chem. (2012) 287: 43116–25. DOI: 10.1074 / jbc.M112.427310
PubMed Аннотация | CrossRef Полный текст | Google Scholar
26. Gang TB, Hanley GA, Agrawal A. С-реактивный белок защищает мышей от пневмококковой инфекции через фосфохолин-зависимые и фосфохолиннезависимые механизмы. Infect Immun. (2015) 83: 1845–52. DOI: 10.1128 / IAI.03058-14
PubMed Аннотация | CrossRef Полный текст | Google Scholar
27. Simons JP, Loeffler JM, Al-Shawi R, Ellmerich S, Hutchinson WL, Tennent GA, et al. С-реактивный белок необходим для врожденной устойчивости к пневмококковой инфекции. Иммунология (2014) 142: 414–20. DOI: 10.1111 / imm.12266
PubMed Аннотация | CrossRef Полный текст | Google Scholar
28. Szalai AJ, Briles DE, Volanakis JE.С-реактивный белок человека защищает от фатальной инфекции Streptococcus pneumoniae у трансгенных мышей. J Immunol. (1995) 155: 2557–63.
PubMed Аннотация | Google Scholar
29. Nakayama S, Gewurz H, Holzer T, Du Clos TW, Mold C. Роль селезенки в защитном эффекте C-реактивного белка при инфекции Streptococcus pneumoniae . Clin Exp Immunol. (1983) 54: 319–26.
PubMed Аннотация | Google Scholar
30.Фокс К.Л., Ли Дж., Шведа Э.Х., Витязева В., Мейкпис К., Дженнингс М.П. и др. Дублированные копии lic1 управляют добавлением нескольких остатков фосфохолина в липополисахариде Haemophilus influenzae . Infect Immun. (2008) 76: 588–600. DOI: 10.1128 / IAI.00748-07
PubMed Аннотация | CrossRef Полный текст | Google Scholar
31. Mukerji R, Mirza S, Roche AM, Widener RW, Croney CM, Rhee D.K, et al. Поверхностный белок А пневмококка ингибирует отложение комплемента на поверхности пневмококка, конкурируя со связыванием С-реактивного белка с фосфохолином на поверхности клетки. J Immunol. (2012) 189: 5327–35. DOI: 10.4049 / jimmunol.1201967
PubMed Аннотация | CrossRef Полный текст | Google Scholar
32. Санчес К.Дж., Кумар Н., Лискано А., Шившанкар П., Даннинг Хотопп Дж. К., Йоргенсен Дж. Х. и др. Streptococcus pneumoniae в биопленках не могут вызывать инвазивное заболевание из-за измененной продукции детерминант вирулентности. PLoS ONE (2011) 6: e28738. DOI: 10.1371 / journal.pone.0028738
PubMed Аннотация | CrossRef Полный текст | Google Scholar
33.Доменек М., Рамос-Севильяно Э., Гарсия Э., Москосо М., Юсте Дж. Формирование биопленки позволяет избежать иммунитета к комплементу и фагоцитоза Streptococcus pneumoniae . Infect Immun. (2013) 81: 2606–15. DOI: 10.1128 / IAI.00491-13
PubMed Аннотация | CrossRef Полный текст | Google Scholar
34. Mold C, Rodic-Polic B, Du Clos TW. Защита от инфекции Streptococcus pneumoniae с помощью С-реактивного белка и природных антител требует комплемента, но не рецепторов Fc-гамма. J Immunol. (2002) 168: 6375–81. DOI: 10.4049 / jimmunol.168.12.6375
CrossRef Полный текст | Google Scholar
35. Ng PML, Le Saux A, Lee CM, Tan NS, Lu J, Thiel S, et al. С-реактивный белок взаимодействует с лектинами плазмы, чтобы усилить иммунный ответ против бактерий. EMBO J. (2007) 26: 3431–40. DOI: 10.1038 / sj.emboj.7601762
PubMed Аннотация | CrossRef Полный текст | Google Scholar
37. Zhang J, Koh J, Lu J, Thiel S, Leong BSH, Sethi S, et al.Местное воспаление вызывает перекрестные помехи комплемента, которые усиливают противомикробный ответ. PLoS Pathog. (2009) 5: e1000282. DOI: 10.1371 / journal.ppat.1000282
PubMed Аннотация | CrossRef Полный текст | Google Scholar
38. Zhang J, Yang L, Ang Z, Yoong SL, Tran TTT, Anand GS, et al. Секретируемый M-фиколин закрепляется на трансмембранном G-белке-рецепторе 43 моноцитов и перекрестно взаимодействует с C-реактивным белком плазмы, чтобы опосредовать передачу сигналов иммунной системы и регулировать защиту хозяина. J Immunol. (2010) 185: 6899–910. DOI: 10.4049 / jimmunol.1001225
PubMed Аннотация | CrossRef Полный текст | Google Scholar
39. Ма Ю.Дж., Ли Б.Л., Гарред П. Обзор синергии и перекрестных помех между пентраксинами и коллектинами / фиколинами: их функциональное значение для активации комплемента. Exp Mol Med. (2017) 49: e320. DOI: 10.1038 / emm.2017.51
PubMed Аннотация | CrossRef Полный текст | Google Scholar
40. Vassal-Stermann E, Lacroix M, Gout E, Laffly E, Pedersen CM, Martin L, et al.Человеческий L-фиколин распознает фосфохолиновые фрагменты пневмококковой тейхоевой кислоты. J Immunol. (2014) 193: 5699–708. DOI: 10.4049 / jimmunol.1400127
PubMed Аннотация | CrossRef Полный текст | Google Scholar
41. Yoshimoto R, Fujita Y, Kakino A, Iwamoto S, Takaya T., Sawamura T. Открытие LOX-1, его лигандов и клинического значения. Cardiovasc Drugs Ther. (2011) 25: 379–91. DOI: 10.1007 / s10557-011-6324-6
PubMed Аннотация | CrossRef Полный текст | Google Scholar
42.Fujita Y, Yamaguchi S, Kakino A, Iwamoto S, Yoshimoto R, Sawamura T. Лектин-подобный окисленный рецептор LDL 1 участвует в CRP-опосредованной активации комплемента. Clin Chem. (2011) 57: 1398–405. DOI: 10.1373 / Clinchem.2011.168625
PubMed Аннотация | CrossRef Полный текст | Google Scholar
43. Ципфель П.Ф., Халльстрём Т., Хаммершмидт С., Скерка С. Фактор приспособленности комплемента H: роль в человеческих заболеваниях и для иммунного ускользания патогенов, таких как пневмококки. Vaccine (2008) 26: I67–74.DOI: 10.1016 / j.vaccine.2008.11.015
PubMed Аннотация | CrossRef Полный текст | Google Scholar
44. Копп А., Хебеккер М., Свободова Е., Йози М. Фактор H: регулятор комплемента при здоровье и болезни, а также медиатор клеточных взаимодействий. Биомолекулы (2012) 2: 46–75. DOI: 10.3390 / biom2010046
PubMed Аннотация | CrossRef Полный текст | Google Scholar
45. Meri S, Pangburn MK. Различие между активаторами и неактиваторами альтернативного пути комплемента: регуляция через сайт связывания сиаловой кислоты / полианиона на факторе H. Proc Natl Acad Sci USA. (1990) 87: 3982–6. DOI: 10.1073 / pnas.87.10.3982
PubMed Аннотация | CrossRef Полный текст | Google Scholar
46. Janulczyk R, Iannelli F, Sjoholm AG, Pozzi G, Bjorck L. Hic, новый поверхностный белок Streptococcus pneumoniae , который нарушает функцию комплемента. J Biol Chem. (2000) 275: 37257–63. DOI: 10.1074 / jbc.M004572200
PubMed Аннотация | CrossRef Полный текст | Google Scholar
47.Ярва Х., Янульчик Р., Хеллуэдж Дж., Зипфель П.Ф., Бьорк Л., Мери С. Streptococcus pneumoniae уклоняется от атаки комплемента и опсонофагоцитоза за счет экспрессии Hic-белка, кодируемого локусом pspC , который связывается с короткими консенсусными повторами 8-11 факторов H J Immunol. (2002) 168: 1886–94. DOI: 10.4049 / jimmunol.168.4.1886
PubMed Аннотация | CrossRef Полный текст | Google Scholar
48. Хаммонд Д. Д. Младший, Сингх С. К., Томпсон Дж. А., Билер Б. В., Русиньол А. Е., Пангберн М. К. и др.Идентификация кислых pH-зависимых лигандов пентамерного С-реактивного белка. J Biol Chem. (2010) 285: 36235–44. DOI: 10.1074 / jbc.M110.142026
PubMed Аннотация | CrossRef Полный текст | Google Scholar
49. Сингх С.К., Тирумалай А., Хаммонд Д.Д. мл., Пангберн М.К., Мишра В.К., Джонсон Д.А. и др. Выявление скрытого функционального сайта C-реактивного белка посредством сайт-направленного мутагенеза. J Biol Chem. (2012) 287: 3550–8. DOI: 10.1074 / jbc.M111.310011
PubMed Аннотация | CrossRef Полный текст | Google Scholar
50.Сингх С.К., Тирумалай А., Патак А., Нгва Д.Н., Агравал А. Функциональное преобразование С-реактивного белка перекисью водорода. J Biol Chem. (2017) 292: 3129–36. DOI: 10.1074 / jbc.M116.773176
PubMed Аннотация | CrossRef Полный текст | Google Scholar
51. Акопян С., Харрис К.Л., ван ден Берг К.В., Фернандес-Алонсо М.С., де Хорхе Э.Г., де Кордова С.Р. и др. Фактор комплемента H связывается с денатурированным, а не с нативным пентамерным C-реактивным белком. J Biol Chem. (2008) 283: 30451–60.DOI: 10.1074 / jbc.M803648200
PubMed Аннотация | CrossRef Полный текст | Google Scholar
52. Окемефуна А.И., Нан Р., Миллер А., Гор Дж., Перкинс С.Дж. Фактор комплемента H связывается в двух независимых сайтах с C-реактивным белком в концентрациях острой фазы. J Biol Chem. (2010) 285: 1053–65. DOI: 10.1074 / jbc.M109.044529
PubMed Аннотация | CrossRef Полный текст | Google Scholar
53. Ярва Х., Йокиранта Т.С., Хеллуэдж Дж., Зипфель П.Ф., Мери С. Регулирование активации комплемента с помощью С-реактивного белка: нацеливание на ингибирующую активность комплемента фактора Н посредством взаимодействия с доменами 7 и 8-11 коротких консенсусных повторов. J. Immunol. (1999) 163: 3957–62.
PubMed Аннотация | Google Scholar
54. Sjöberg AP, Trouw LA, Clark SJ, Sjölander J, Heinegård D, Sim RB, et al. Вариант фактора H, связанный с возрастной дегенерацией желтого пятна (His-384), и форма, не связанная с заболеванием, по-разному связываются с C-реактивным белком, фибромодулином, ДНК и некротическими клетками. J Biol Chem. (2007) 282: 10894–900. DOI: 10.1074 / jbc.M610256200
PubMed Аннотация | CrossRef Полный текст | Google Scholar
55.Михлан М., Стиппа С., Йози М., Ципфель П.Ф. Мономерный CRP способствует контролю за комплементом в жидкой фазе и на клеточных поверхностях и увеличивает фагоцитоз за счет рекрутирования фактора Н. Cell Death Differ. (2009) 16: 1630–40. DOI: 10.1038 / cdd.2009.103
PubMed Аннотация | CrossRef Полный текст | Google Scholar
56. Кларк SJ, Хигман VA, Mulloy B, Perkins SJ, Lea SM, Sim RB, et al. His-384 аллотипический вариант фактора H, связанный с возрастной дегенерацией желтого пятна, имеет свойства связывания гепарина, отличные от не связанной с заболеванием формы. J Biol Chem. (2006) 281: 24713–20. DOI: 10.1074 / jbc.M605083200
PubMed Аннотация | CrossRef Полный текст | Google Scholar
57. Лайне М., Ярва Х., Сейтсонен С., Хаапасало К., Лехтинен М.Дж., Линдеман Н. и др. Полиморфизм Y402H фактора комплемента H влияет на аффинность связывания с C-реактивным белком. J Immunol. (2007) 178: 3831–6. DOI: 10.4049 / jimmunol.178.6.3831
PubMed Аннотация | CrossRef Полный текст | Google Scholar
58. Герберт А. П., Дикин Дж. А., Шмидт К. К., Блаум Б. С., Иган С., Феррейра В. П. и др.Структура показывает, что сайт узнавания гликозаминогликана и белка в факторе H нарушен однонуклеотидным полиморфизмом, связанным с возрастной дегенерацией желтого пятна. J Biol Chem. (2007) 282: 18960–8. DOI: 10.1074 / jbc.M609636200
PubMed Аннотация | CrossRef Полный текст | Google Scholar
59. Лауэр Н., Михлан М., Хартманн А., Шлётцер-Шрехардт Ю., Кейльхауэр С., Шолль ХПН и др. Регулирование комплемента при некротических клеточных поражениях нарушается связанным с возрастом дегенерацией желтого пятна фактором риска-H His 402 вариант риска. J Immunol. (2011) 187: 4374–83. DOI: 10.4049 / jimmunol.1002488
PubMed Аннотация | CrossRef Полный текст | Google Scholar
60. Молинс Б., Фуэнтес-Приор П., Адан А., Антон Р., Аростеги Дж. И., Ягуэ Дж. И др. Связывание мономерного C-реактивного белка фактором комплемента H подавляет провоспалительную активность и нарушается в случае полиморфных вариантов CFH из группы риска. Научный доклад (2016) 6: 22889. DOI: 10.1038 / srep22889
PubMed Аннотация | CrossRef Полный текст | Google Scholar
61.Mold C, Gewurz H. Ингибирующее действие C-реактивного белка на активацию альтернативного пути C липосомами и Streptococcus pneumoniae . J Immunol. (1981) 127: 2089–92.
PubMed Аннотация | Google Scholar
62. Mold C, Kingzette M, Gewurz H. C-реактивный белок ингибирует пневмококковую активацию альтернативного пути за счет увеличения взаимодействия между фактором H и C3b. J Immunol. (1984) 133: 882–5.
PubMed Аннотация | Google Scholar
63.Suankratay C, Mold C, Zhang Y, Potempa LA, Lint TF, Gewurz H. Регулирование комплемента при врожденном иммунитете и острофазовый ответ: ингибирование маннан-связывающего лектина цитолиза комплемента с помощью C-реактивного белка (CRP). Clin Exp Immunol. (1998) 113: 353–9. DOI: 10.1046 / j.1365-2249.1998.00663.x
PubMed Аннотация | CrossRef Полный текст | Google Scholar
64. Zhang Y, Suankratay C, Zhang XH, Lint TF, Gewurz H. Лизис через лектиновый путь активации комплемента: мини-обзор и усиление лектинового пути инициированного эндотоксином гемолиза. Иммунофармакология (1999) 42: 81–90. DOI: 10.1016 / S0162-3109 (99) 00029-6
PubMed Аннотация | CrossRef Полный текст | Google Scholar
65. Hebecker M, Okemefuna AI, Perkins SJ, Mihlan M, Huber-Lang M, Józsi M. Молекулярные основы связывания C-реактивного белка и модуляции активации комплемента с помощью фактора H-родственного белка 4. Mol Immunol. (2010) 47: 1347–55. DOI: 10.1016 / j.molimm.2009.12.005
PubMed Аннотация | CrossRef Полный текст | Google Scholar
66.Csincsi ÁI, Kopp A, Zöldi M, Bánlaki Z, Uzonyi B., Hebecker M, et al. Связанный с фактором H белок 5 взаимодействует с пентраксином 3 и внеклеточным матриксом и модулирует активацию комплемента. J Immunol (2015) 194: 4963–73. DOI: 10.4049 / jimmunol.1403121
PubMed Аннотация | CrossRef Полный текст | Google Scholar
67. Csincsi ÁI, Szabó Z, Bánlaki Z, Uzonyi B., Cserhalmi M, Kárpáti É, et al. FHR-1 связывается с C-реактивным белком и скорее усиливает, чем ингибирует активацию комплемента. J Immunol. (2017) 199: 292–303. DOI: 10.4049 / jimmunol.1600483
PubMed Аннотация | CrossRef Полный текст | Google Scholar
68. Свинкелс М., Чжан Дж. Х., Тилакаратна В., Блэк Дж., Первин Р., МакХарг С. и др. Связывание C-реактивного белка и пентраксина-3 фактора H-подобного белка 1 отличается от фактора комплемента H: влияние на воспаление сетчатки. Научный доклад (2018) 8: 1643. DOI: 10.1038 / s41598-017-18395-7
PubMed Аннотация | CrossRef Полный текст | Google Scholar
69.Рой Н., Отани К., Мацуда Й., Мори К., Хван И., Сузуки Ю. и др. Collectin CL-P1 использует C-реактивный белок для активации комплемента. Biochim Biophys Acta (2016) 1860: 1118–28. DOI: 10.1016 / j.bbagen.2016.02.012
PubMed Аннотация | CrossRef Полный текст | Google Scholar
70. Рой Н., Отани К., Хидака И., Амано Ю., Мацуда И., Мори К. и др. Три пентраксина, С-реактивный белок, сывороточный амилоидный компонент Р и пентраксин 3, опосредуют активацию комплемента с использованием коллектина CL-P1. Biochim Biophys Acta (2017) 1861: 1–14. DOI: 10.1016 / j.bbagen.2016.11.023
PubMed Аннотация | CrossRef Полный текст | Google Scholar
71. Ngwa DN. Сравнение антипневмококковых функций нативных и модифицированных форм С-реактивного белка . Диссертация / магистерская работа. Джонсон-Сити, Теннесси: Университет Восточного Теннесси (2016).
Google Scholar
72. Ngwa DN, Gang TB, Singh SK, Agrawal A. Сконструированный C-реактивный белок с улучшенным защитным действием против пневмококковой инфекции. J Immunol. (2016) 196: 63.
Google Scholar
73. Ngwa DN, Singh SK, Gang TB, Agrawal A. Стратегия на основе C-реактивного белка для уменьшения дозировки антибиотиков. J Immunol. (2018) 200: 170.
Google Scholar
74. Сьёберг А.П., Труу Л.А., МакГрат ФДГ, Hack CE, Блом А.М. Регулирование активации комплемента с помощью C-реактивного белка: нацеливание на ингибирующую активность C4b-связывающего белка. J Immunol. (2006) 176: 7612–20.DOI: 10.4049 / jimmunol.176.12.7612
PubMed Аннотация | CrossRef Полный текст | Google Scholar
75. Агарвал В., Хаммершмидт С., Мальм С., Бергманн С., Рисбек К., Блом А.М.. Энолаза Streptococcus pneumoniae связывает человеческий ингибитор комплемента C4b-связывающий белок и способствует уклонению от комплемента. J Immunol. (2012) 189: 3575–84. DOI: 10.4049 / jimmunol.1102934
PubMed Аннотация | CrossRef Полный текст | Google Scholar
76. Frolet C, Beniazza M, Roux L, Gallet B, Noirclerc-Savoye M, Vernet T, et al.Новые адгезиновые функции открытых пневмококковых белков. BMC Microbiol. (2010) 10: 190. DOI: 10.1186 / 1471-2180-10-190
PubMed Аннотация | CrossRef Полный текст | Google Scholar
77. Kindmark CO. In vitro Связывание С-реактивного белка человека некоторыми патогенными бактериями и зимозаном. Clin Exp Immunol. (1972) 11: 283–9.
PubMed Аннотация | Google Scholar
78. Mold C, Rodgers CP, Kaplan RL, Gewurz H. Связывание человеческого C-реактивного белка с бактериями. Infect Immun. (1982) 38: 392–5.
PubMed Аннотация | Google Scholar
79. Де Бофорт AJ, Langermans JAM, Matze-van der Lans AM, Hiemstra PS, Vossen JM, van Furth R. Разница в связывании убитых и живых серотипов Streptococcus pneumoniae С-реактивным белком. Scand J Immunol. (1997) 46: 597–600. DOI: 10.1046 / j.1365-3083.1997.d01-171.x
PubMed Аннотация | CrossRef Полный текст | Google Scholar
80. Эдвардс К.М., Гевурц Х., Lint TF Mold C.Роль C-реактивного белка в опосредованной комплементом стимуляции нейтрофилов человека Streptococcus pneumoniae 27 типа. J Immunol. (1982) 128: 2493–6.
PubMed Аннотация | Google Scholar
81. Хиггинботам Дж., Хайдельбергер М., Готшлих Э. Деградация полисахарида, специфичного для пневмококкового типа, с проявлением групповой специфичности. Proc Natl Acad Sci USA. (1970) 67: 138–42. DOI: 10.1073 / pnas.67.1.138
PubMed Аннотация | CrossRef Полный текст | Google Scholar
82.Heidelberger M, Gotschlich EC, Higginbotham JD. Эксперименты по ингибированию пневмококка C и депирувилированных полисахаридов IV типа. Carbohydr Res. (1972) 22: 1–4. DOI: 10.1016 / S0008-6215 (00) 85719-5
PubMed Аннотация | CrossRef Полный текст | Google Scholar
83. Köttgen E, Hell B, Kage A, Tauber R. Специфичность лектина и характеристики связывания человеческого C-реактивного белка. J Immunol. (1992) 149: 445–53.
PubMed Аннотация | Google Scholar
84.Ли RT, Ли YC. Углеводные лиганды С-реактивного белка человека: связывание неогликопротеинов, содержащих галактозо-6-фосфат и дисахарид с концевым галактозным концом. Glycoconj J. (2006) 23: 317–27. DOI: 10.1007 / s10719-006-6173-x
PubMed Аннотация | CrossRef Полный текст | Google Scholar
85. Szalai AJ, VanCott JL, McGhee JR, Volanakis JE, Benjamin WH Jr. С-реактивный белок человека защищает от фатальной инфекции Salmonella enterica serovar typhimurium у трансгенных мышей. Infect Immun. (2000) 68: 5652–6. DOI: 10.1128 / IAI.68.10.5652-5656.2000
PubMed Аннотация | CrossRef Полный текст | Google Scholar
86. Weiser JN, Pan N, McGowan KL, Musher D, Martin A, Richards J. Фосфорилхолин на липополисахариде Haemophilus influenzae способствует сохранению в дыхательных путях и чувствительности к уничтожению сыворотки, опосредованной С-реактивным белком. J Exp Med. (1998) 187: 631–40. DOI: 10.1084 / jem.187.4,631
PubMed Аннотация | CrossRef Полный текст | Google Scholar
87. Лысенко Е., Ричардс Дж. К., Кокс А. Д., Стюарт А., Мартин А., Капур М. и др. Положение фосфорилхолина на липополисахариде Haemophilus influenzae влияет на связывание и чувствительность к опосредованному С-реактивному белку уничтожению. Mol Microbiol. (2000) 35: 234–45. DOI: 10.1046 / j.1365-2958.2000.01707.x
PubMed Аннотация | CrossRef Полный текст | Google Scholar
88.Вейзер Дж. Н., Пан Н. Адаптация Haemophilus influenzae к приобретенному и врожденному гуморальному иммунитету на основе изменения фазы липополисахарида. Mol Microbiol. (1998) 30: 767–75. DOI: 10.1046 / j.1365-2958.1998.01108.x
PubMed Аннотация | CrossRef Полный текст | Google Scholar
89. Серино Л., Вирджи М. Генетический и функциональный анализ фосфорилхолиновой части комменсального липополисахарида Neisseria . Mol Microbiol. (2002) 43: 437–48.DOI: 10.1046 / j.1365-2958.2002.02755.x
PubMed Аннотация | CrossRef Полный текст | Google Scholar
90. Кейси Р., Ньюкомб Дж., Макфадден Дж., Бодман-Смит КБ. С-реактивный белок острой фазы связывается с экспрессирующим фосфорилхолин Neisseria meningitidis и увеличивает поглощение фагоцитами человека. Infect Immun. (2008) 76: 1298–304. DOI: 10.1128 / IAI.00741-07
PubMed Аннотация | CrossRef Полный текст | Google Scholar
91. Серино Л., Вирджи М.Фосфорилхолиновый декор липополисахарида отличает комменсал Neisseriae от патогенных штаммов: идентификация генов типа licA в комменсале Neisseriae . Mol Microbiol. (2000) 35: 1550–9. DOI: 10.1046 / j.1365-2958.2000.01825.x
PubMed Аннотация | CrossRef Полный текст | Google Scholar
93. Noursadeghi M, Bickerstaff MCM, Gallimore JR, Herbert J, Cohen J, Pepys MB. Роль амилоидного компонента P сыворотки в бактериальной инфекции: защита хозяина или защита от патогена. Proc Natl Acad Sci USA. (2000) 97: 14584–9. DOI: 10.1073 / pnas.97.26.14584
CrossRef Полный текст | Google Scholar
94. Чае М.Р., Пак Б.Х., Ким Дж. С., Ро Х. В., Пак Дж. У., Ким Х. Р.. Защитный эффект С-реактивного белка против летальности, вызванной липополисахаридом Vibrio vulnificus . Microbiol Immunol. (2000) 44: 335-40. DOI: 10.1111 / j.1348-0421.2000.tb02503.x
PubMed Аннотация | CrossRef Полный текст | Google Scholar
95.Mold C, Rodriguez W., Rodic-Polic B, Du Clos TW. С-реактивный белок опосредует защиту от липополисахаридов посредством взаимодействия с FcγR. J Immunol. (2002) 169: 7019–25. DOI: 10.4049 / jimmunol.169.12.7019
CrossRef Полный текст | Google Scholar
96. Хиршфилд Г.М., Герберт Дж., Кахан М.С., Пепис МБ. С-реактивный белок человека не защищает мышей от острой липополисахаридной нагрузки. J Immunol. (2003) 171: 6046–51. DOI: 10.4049 / jimmunol.171.11.6046
CrossRef Полный текст | Google Scholar
97. Ng PML, Jin Z, Tan SSH, Ho B, Ding JL. С-реактивный белок: преобладающий LPS-связывающий белок острой фазы, отвечающий на инфекцию Pseudomonas . J Endotoxin Res. (2004) 10: 163–74. DOI: 10.1177 / 096805100030301
PubMed Аннотация | CrossRef Полный текст | Google Scholar
98. Low DHP, Frecer V, Le Saux A, Srinivasan GA, Ho B, Chen J, et al. Молекулярные интерфейсы тектониновых доменов галактозосвязывающего белка во взаимодействии хозяин-патоген. J Biol Chem. (2010) 285: 9898–907. DOI: 10.1074 / jbc.M109.059774
PubMed Аннотация | CrossRef Полный текст | Google Scholar
99. Тиле Дж. Р., Хаберсбергер Дж., Брейг Д., Шмидт Й., Гёрендт К., Маурер В. и др. Диссоциация пентамерного и мономерного С-реактивного белка локализует и усугубляет воспаление: in vivo доказательство мощного провоспалительного механизма и новой противовоспалительной стратегии. Тираж (2014) 130: 35–50. DOI: 10.1161 / CIRCULATIONAHA.113.007124
PubMed Аннотация | CrossRef Полный текст | Google Scholar
100. Брейг Д., Неро Т.Л., Кох Х.Г., Кайзер Б., Ван Х, Тиле Дж. Р. и др. Переходные изменения в структуре CRP приводят к обнажению провоспалительных сайтов связывания. Nat Commun. (2017) 8: 14188. DOI: 10.1038 / ncomms14188
PubMed Аннотация | CrossRef Полный текст | Google Scholar
101. McFadyen JD, Kiefer J, Braig D, Loseff-Silver J, Potempa LA, Eisenhardt SU, et al. Диссоциация C-реактивного белка локализует и усиливает воспаление: доказательства прямой биологической роли C-реактивного белка и его конформационных изменений. Front Immunol. (2018) 9: 1351. DOI: 10.3389 / fimmu.2018.01351
PubMed Аннотация | CrossRef Полный текст | Google Scholar
102. Суреш М.В., Сингх С.К., Агравал А. Взаимодействие связанного с кальцием С-реактивного белка с фибронектином контролируется pH: in vivo последствий. J Biol Chem. (2004) 279: 52552–57. DOI: 10.1074 / jbc.M4000
PubMed Аннотация | CrossRef Полный текст | Google Scholar
103. Салазар Дж., Мартинес М.С., Чавес-Кастильо М., Нуньес В., Аньес Р., Торрес И. и др.С-реактивный белок: углубленное изучение структуры, функции и регуляции. Int Sch Res Not. (2014) 2014: 653045. DOI: 10.1155 / 2014/653045
PubMed Аннотация | CrossRef Полный текст | Google Scholar
104. Wu Y, Potempa LA, El Kebir D, Filep JG. С-реактивный белок и воспаление: конформационные изменения влияют на функцию. Biol Chem. (2015) 396: 1181–97. DOI: 10.1515 / hsz-2015-0149
PubMed Аннотация | CrossRef Полный текст | Google Scholar
105.Ван М.Ю., Цзи С.Р., Бай СиДжей, Эль Кебир Д., Ли Х.Й., Ши Дж.М. и др. Редокс-переключатель в С-реактивном белке модулирует активацию эндотелиальных клеток. FASEB J. (2011) 25: 3186–96. DOI: 10.1096 / fj.11-182741
PubMed Аннотация | CrossRef Полный текст | Google Scholar
106. Kenawy HI, Boral I, Bevington A. Перекрестный разговор между свертыванием и комплементом: потенциальный медиатор физиологической активации комплемента при низком pH. Front Immunol. (2015) 6: 1–10. DOI: 10.3389 / fimmu.2015.00215
PubMed Аннотация | CrossRef Полный текст | Google Scholar
108. Ji SR, Wu Y, Zhu L, Potempa LA, Sheng FL, Lu W, et al. Клеточные мембраны и липосомы диссоциируют C-реактивный белок (CRP) с образованием нового биологически активного структурного промежуточного продукта: mCRP (m). FASEB J. (2007) 21: 284–94. DOI: 10.1096 / fj.06-6722com
PubMed Аннотация | CrossRef Полный текст | Google Scholar
109. Алнаас А.А., Мун К.Л., Альтон М., Рид С.М., Ноулз М.К. Конформационные изменения C-реактивного белка влияют на связывание с изогнутыми мембранами в модели липидного бислоя апоптотической клеточной поверхности. J. Phys Chem B. (2017) 121: 2631–9. DOI: 10.1021 / acs.jpcb.6b11505
PubMed Аннотация | CrossRef Полный текст | Google Scholar
110. Goda T, Miyahara Y. Специфическое связывание человеческого C-реактивного белка с поддерживаемыми монослоями бинарных и сконструированных фосфолипидов. Коллоидные поверхности B Биоинтерфейсы (2018) 161: 662–9. DOI: 10.1016 / j.colsurfb.2017.11.036
PubMed Аннотация | CrossRef Полный текст | Google Scholar
111. Ши П, Ли Х-Х, Чжу В., Ян Х, Донг С., Ли Х-М.Иммуногистохимическое окрашивание выявляет С-реактивный белок, существующий преимущественно в виде измененных конформационных форм в воспалительных поражениях. Acta Biol Hung. (2014) 65: 265–73. DOI: 10.1556 / ABiol.65.2014.3.3
PubMed Аннотация | CrossRef Полный текст | Google Scholar
112. Ли Х.Й., Ван Дж., Мэн Ф., Цзя З.К., Су И, Бай К.Ф. и др. Внутренне неупорядоченный мотив опосредует различные действия мономерного C-реактивного белка. J Biol Chem. (2016) 291: 8795–804. DOI: 10.1074 / jbc.M115.695023
PubMed Аннотация | CrossRef Полный текст | Google Scholar
113. Рамос-Севильяно Э., Родригес-Соса С., Кафини Ф., Хименес М.Дж., Наварро А., Севильано Д. и др. Цефдиторен и цефтриаксон усиливают опосредованный комплементом иммунитет в присутствии специфических антител против устойчивых к антибиотикам штаммов пневмококка. PLoS ONE (2012) 7: e44135. DOI: 10.1371 / journal.pone.0044135
PubMed Аннотация | CrossRef Полный текст | Google Scholar
Структура и организация поверхностного гликопротеина вируса гриппа C in situ
Salez, N. et al. Высокие показатели распространенности вируса гриппа С наблюдаются в 3 различных группах населения. J. Infect. 69 , 182–189 (2014).
Артикул
Google ученый
Matsuzaki, Y. et al. Общенациональная эпидемия инфекции вируса гриппа C в Японии в 2004 году. J. Clin. Microbiol. 45 , 783–788 (2007).
CAS
Статья
Google ученый
Gouarin, S. et al. Изучение инфекции вируса гриппа С во Франции. J. Med. Virol. 80 , 1441–1446 (2008).
CAS
Статья
Google ученый
Ohuchi, M., Ohuchi, R. & Mifune, K. Демонстрация гемолитической и гибридной активности вируса гриппа C. J. Virol. 42 , 1076–1079 (1982).
CAS
Статья
Google ученый
Formanowski, F., Wharton, S.A., Calder, L.J., Hofbauer, C. & Meier-Ewert, H. Характеристики слияния вирусов гриппа C. J. Gen. Virol. 71 , 1181–1188 (1990).
CAS
Статья
Google ученый
Rogers, G. N., Herrler, G., Paulson, J. C. & Klenk, H. D. Вирус гриппа C использует 9-O-ацетил-N-ацетилнейраминовую кислоту в качестве детерминанты рецептора с высоким сродством для прикрепления к клеткам. J. Biol. Chem. 261 , 5947–5951 (1986).
CAS
Статья
Google ученый
Herrler, G. et al. Фермент вируса гриппа С, разрушающий рецептор, — нейраминат-О-ацетилэстераза. EMBO J. 4 , 1503–1506 (1985).
CAS
Статья
Google ученый
Флюетт, Т. Х., Апостолов К. Ретикулярная структура в стенке вируса гриппа С. J. Gen. Virol. 1 , 297–304 (1967).
CAS
PubMed
Google ученый
Hewat, E. A., Cusack, S., Ruigrok, R. W. & Verwey, C. Структура гликопротеина гриппа C с низким разрешением, определенная с помощью электронной микроскопии. J. Mol. Биол. 175 , 175–193 (1984).
CAS
Статья
Google ученый
Herrler, G., Nagele, A., Meier-Ewert, H., Bhown, A. S. & Compans, R. W. Выделение и структурный анализ гликопротеинов вириона гриппа C. Вирусология 113 , 439–451 (1981).
CAS
Статья
Google ученый
Muraki, Y. et al. Мутация в белке M1 вируса гриппа С влияет на морфологию вириона, изменяя сродство белка к мембране. J. Virol. 81 , 8766–8773 (2007).
CAS
Статья
Google ученый
Nishimura, H. et al. Характеристика пуповинных структур, возникающих на поверхности клеток, инфицированных вирусом гриппа С. Вирусология 179 , 179–188 (1990).
CAS
Статья
Google ученый
Rosenthal, P. B. et al. Структура гликопротеина слияния гемагглютинин-эстераза вируса гриппа С. Nature 396 , 92–96 (1998).
ADS
CAS
Статья
Google ученый
Girdlestone, C. & Hayward, S. Веб-сервер DynDom3D для анализа перемещений доменов в мультимерных белках. J. Comput. Биол. 23 , 21–26 (2016).
CAS
Статья
Google ученый
Буллоу, П. А., Хьюсон, Ф.М., Скехел, Дж. Дж. И Вили, Д. С. Структура гемагглютинина гриппа при pH слияния мембран. Nature 371 , 37–43 (1994).
ADS
CAS
Статья
Google ученый
Бентон Д. Дж., Гамблин С. Дж., Розенталь П. Б. и Скехел Дж. Дж. Структурные переходы в гемагглютинине гриппа при pH слияния мембран. Природа https://doi.org/10.1038/s41586-020-2333-6 (2020).
Benton, D. J. et al. Якорь мембраны гемагглютинина гриппа. Proc. Natl Acad. Sci. США 115 , 10112–10117 (2018).
CAS
Статья
Google ученый
Matsuzaki, Y. et al. Нейтрализующие эпитопы и остатки, опосредующие потенциальный антигенный дрейф белка гемагглютинин-эстеразы вируса гриппа С. Вирусы 10 , 417 (2018).
Артикул
Google ученый
Matsuzaki, M. et al. Расположение нейтрализующих эпитопов на белке гемагглютинин-эстеразы вируса гриппа С. Вирусология 189 , 79–87 (1992).
CAS
Статья
Google ученый
Зенг, К., Лангереис, М. А., ван Влит, А. Л. В., Хейзинга, Э. Г. и де Гроот, Р. Дж. Структура гемагглютинин-эстеразы коронавируса дает представление об эволюции вируса короны и гриппа. Proc.Natl Acad. Sci. США 105 , 9065–9069 (2008).
ADS
CAS
Статья
Google ученый
Muraki, Y. et al. Идентификация аминокислотного остатка на белке M1 вируса гриппа С, ответственного за образование пуповинных структур вируса. J. Gen. Virol. 85 , 1885–1893 (2004).
CAS
Статья
Google ученый
Calder, L. J. & Rosenthal, P. B. Криомикроскопия позволяет получить структурные снимки слияния мембран вируса гриппа. Nat. Struct. Мол. Биол. 23 , 853–858 (2016).
CAS
Статья
Google ученый
Godley, L. et al. Введение межсубъединичных дисульфидных связей в мембранно-дистальную область гемагглютинина гриппа отменяет активность слияния мембран. Cell 68 , 635–645 (1992).
CAS
Статья
Google ученый
Song, H. et al. Открытая рецептор-связывающая полость гликопротеина слияния гемагглютинин-эстераза из недавно идентифицированного вируса гриппа D: основа его широкого клеточного тропизма. PLoS Pathog. 12 , e1005411 (2016).
Артикул
Google ученый
Nakatsu, S. et al. Вирусы гриппа C и D содержат восемь организованных рибонуклеопротеидных комплексов. J. Virol . 92 , e02084-17 (2018).
Höfling, K., Brossmer, R., Klenk, H. D. & Herrler, G. Перенос резистентного к эстеразе аналога рецептора на поверхность вирионов гриппа C приводит к снижению инфекционности из-за образования агрегатов. Virology 218 , 127–133 (1996).
Артикул
Google ученый
Мастронард, Д. Н. Двухосевая томография: подход с методами совмещения, которые сохраняют разрешение. J. Struct. Биол. 120 , 343–352 (1997).
CAS
Статья
Google ученый
Кремер, Дж. Р., Мастронарде, Д. Н. и Макинтош, Дж. Р. Компьютерная визуализация данных трехмерного изображения с использованием IMOD. J. Struct. Биол. 116 , 71–76 (1996).
CAS
Статья
Google ученый
Роху, А.& Григорьев, Н. CTFFIND4: Быстрая и точная оценка расфокусировки по электронным микрофотографиям. J. Struct. Биол. 192 , 216–221 (2015).
Артикул
Google ученый
Turoňová, B., Schur, F. K. M., Wan, W. & Briggs, J. A. G. Эффективная коррекция 3D-CTF для криоэлектронной томографии с использованием NovaCTF улучшает разрешение усреднения субтомограммы до 3,4 Å. J. Struct. Биол. 199 , 187–195 (2017).
Артикул
Google ученый
Эгельман Э. Х. Реконструкция спиральных нитей и трубок. В Методы в энзимологии Vol. 482, 167–183 (Academic Press Inc., 2010).
Shaikh, T. R. et al. Обработка изображений паука для одночастичной реконструкции биологических макромолекул из электронных микрофотографий. Nat. Protoc. 3 , 1941–1974 (2008).
CAS
Статья
Google ученый
He, S. & Scheres, S. H. W. Спиральная реконструкция в RELION. J. Struct. Биол. 198 , 163–176 (2017).
CAS
Статья
Google ученый
Zivanov, J. et al. Новые средства автоматизированного определения криоЭМ структуры высокого разрешения в РЕЛИОН-3. Элиф 7 , e42166 (2018).
Кастаньо-Диес, Д., Кудряшев, М. и Штальберг, Х. Каталог Dynamo: геометрические инструменты и управление данными для сбора частиц при усреднении субтомограмм криоэлектронных томограмм. J. Struct. Биол. 197 , 135–144 (2017).
Артикул
Google ученый
Tang, G. et al. EMAN2: расширяемый пакет обработки изображений для электронной микроскопии. J. Struct. Биол. 157 , 38–46 (2007).
CAS
Статья
Google ученый
Pettersen, E. F. et al. UCSF Chimera — система визуализации для поисковых исследований и анализа. J. Comput. Chem. 25 , 1605–1612 (2004).
CAS
Статья
Google ученый
Trabuco, L. G., Villa, E., Mitra, K., Frank, J. & Schulten, K. Гибкая подгонка атомных структур в карты электронной микроскопии с использованием молекулярной динамики. Структура 16 , 673–683 (2008).
CAS
Статья
Google ученый
Хамфри В., Далке А. и Шультен К. VMD: визуальная молекулярная динамика. J. Mol. График. 14 , 27–28 (1996).
Артикул
Google ученый
Phillips, J. C. et al. Масштабируемая молекулярная динамика с NAMD. J. Comput. Chem. 26 , 1781–1802 (2005).
CAS
Статья
Google ученый
Хуанг Дж.И МакКерелл, А. Д. Полноатомное аддитивное силовое поле белка CHARMM36: проверка на основе сравнения с данными ЯМР. J. Comput. Chem. 34 , 2135–2145 (2013).
CAS
Статья
Google ученый
Эмсли П., Локамп Б., Скотт В. Г. и Коутан К. Особенности и развитие Coot. Acta Crystallogr. D. Biol. Кристаллогр. 66 , 486–501 (2010).
CAS
Статья
Google ученый
Adams, P. D. et al. PHENIX: комплексная система на основе Python для решения макромолекулярных структур. Acta Crystallogr. D. Biol. Кристаллогр. 66 , 213–221 (2010).
CAS
Статья
Google ученый
Пунджани, А., Рубинштейн, Дж. Л., Флит, Д. Дж. И Брубакер, М. А. CryoSPARC: алгоритмы для быстрого неконтролируемого определения структуры крио-ЭМ. Nat. Методы 14 , 290–296 (2017).
CAS
Статья
Google ученый
Терминал парковки | Аэропорт Джона Уэйна, округ Ориндж
Оценка
2 доллара в час до 20 долларов за 24-часовой период
Часы
Парковочные конструкции доступны 24 часа в сутки.
Адрес
18601 Airport Way, Санта-Ана, Калифорния 92707
Парковочные конструкции
Доступ ко всем парковочным сооружениям возможен только с Уровня отправления (верхнего).
A1, A2 | B2 | С |
---|---|---|
Air Canada, American, Delta, Sun Country и WestJet | Аляска и Юнайтед | Allegiant, Frontier, Southwest и Spirit |
Рядом и прямо напротив терминала A | Прямо напротив терминала B | Рядом с терминалом C |
Способы оплаты
- Наличные
- Visa, MasterCard, Discover Card, American Express
- Дебетовые карты Visa и MasterCard
- Apple Pay.
Опции без билетов
Пассажиры могут парковаться на любом месте парковки без парковочного талона, используя опцию безбилетной парковки. При въезде на любую стоянку просто вставьте действующую кредитную карту в серый слот для кредитной карты в столбце входа — вам не будет выдан билет и при въезде не будет взиматься плата. По возвращении и выходе с парковки пройдите к любой полосе экспресс-выезда и вставьте ту же кредитную карту, которая использовалась при въезде для расчета платы за парковку и оплаты.Квитанция будет автоматически распечатана. ОДНА кредитная карта ДОЛЖНА использоваться для входа и выхода. Этот безбилетный метод избавляет от необходимости отслеживать парковочный талон во время поездки, сокращает время ожидания на выходе и исключает отходы при утилизации бумажного парковочного талона.
Утерянный билет или кредитная карта: С пассажиров взимается максимальная дневная ставка с даты въезда.
Пешие остановки (строение C)
Пункты оплаты парковки, позволяющие оплачивать парковку кредитной картой до возвращения в свой автомобиль, теперь доступны в структуре парковки C на уровнях 1 и 3.Станции Pay-on-Foot позволяют пассажирам оплачивать парковку и выходить из структуры парковки C по полосам экспресс-выхода, не дожидаясь кассира. Наличные не принимаются на станциях пешеходной оплаты.
Пространство в гараже
Негабаритные автомобили можно припарковать только на верхних уровнях парковочных сооружений A2 и B2. На нижние уровни нет доступа для негабаритных транспортных средств. Все автомобили ростом выше 9 футов 4 дюйма следует оставлять на стоянке на главной улице.
Дороги аэропорта | 14 ‘2 « |
Структура парковки A1 (верхний уровень) | 7 ’10 « |
Парковочные конструкции A2 и B2 (только верхний уровень) | 9 ‘4 « |
Парковочные конструкции A2 (Уровень 1) | 8 ‘2 « |
Структура парковки C (верхний уровень) | 8 ‘2 « |
Для получения помощи
Отдел по работе с клиентами: (949) 252-5200 доб.