Вопросы с тегом «struct»

Ключевое слово в различных языках программирования, синтаксис которого подобен или получен из C (C ++, C #, Swift, Go, Rust и т. Д.). Используйте специальный тег языка программирования для обозначения вопросов, связанных с использованием `struct`, поскольку синтаксис и семантика могут зависеть от языка. Ключевое слово определяет или объявляет тип данных, состоящий из других типов данных. Каждый член структуры имеет свою область памяти (в отличие от «союза», члены которого разделяют одну область памяти).

12
Безопасно ли возвращать структуру на C или C ++?
Я понимаю, что этого делать не следует, но я считаю, что видел примеры, которые делают что-то подобное (код заметки не обязательно синтаксически правильный, но идея есть) typedef struct{ int a,b; }mystruct; А вот функция mystruct func(int c, int d){ mystruct retval; retval.a = c; retval.b = d; return retval; } …

16
значение по умолчанию для члена структуры в C
Можно ли установить значения по умолчанию для некоторого члена структуры? Я пробовал следующее, но это вызвало синтаксическую ошибку: typedef struct { int flag = 3; } MyStruct; Ошибки: $ gcc -o testIt test.c test.c:7: error: expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ before ‘=’ token test.c: In function ‘main’: test.c:17: …
84 c  struct 

14
Как преобразовать структуру в массив байтов в C #?
Как преобразовать структуру в массив байтов в C #? Я определил такую ​​структуру: public struct CIFSPacket { public uint protocolIdentifier; //The value must be "0xFF+'SMB'". public byte command; public byte errorClass; public byte reserved; public ushort error; public byte flags; //Here there are 14 bytes of data which is used …
83 c#  struct 

6
Правильный способ инициализации структур C ++
Наш код включает структуру POD (Plain Old Datastructure) (это базовая структура C ++, в которой есть другие структуры и переменные POD, которые необходимо инициализировать вначале). Судя по тому, что я читал , кажется, что: myStruct = (MyStruct*)calloc(1, sizeof(MyStruct)); должен инициализировать все значения до нуля, как это делает: myStruct = new …

4
Что особенного в структурах?
Я знаю, что в C мы не можем вернуть массив из функции, а только указатель на массив. Но я хочу знать, в чем особенность, structsкоторая делает их возвращаемыми функциями, даже если они могут содержать массивы. Почему structупаковка делает действующей следующую программу? #include <stdio.h> struct data { char buf[256]; }; struct …

4
Зачем нужны пустые скобки '{}' в конце массива структур?
Я ударил некоторых с код в ядре Linux: static struct ctl_table ip_ct_sysctl_table[] = { { .procname = "ip_conntrack_max", .maxlen = sizeof(int), .mode = 0644, .proc_handler = proc_dointvec, }, // ... { .procname = "ip_conntrack_log_invalid", .maxlen = sizeof(unsigned int), .mode = 0644, .proc_handler = proc_dointvec_minmax, .extra1 = &log_invalid_proto_min, .extra2 = &log_invalid_proto_max, …

1
Какова семантика перекрывающихся объектов в C?
Рассмотрим следующую структуру: struct s { int a, b; }; Обычно 1 , эта структура будет иметь размер 8 и выравнивание 4. Что если мы создадим два struct sобъекта (точнее, мы запишем в выделенное хранилище два таких объекта), причем второй объект будет перекрывать первый? char *storage = malloc(3 * sizeof(struct …

2
[[no_unique_address]] и два значения элемента одного типа
Я играю с [[no_unique_address]]в c++20. В примере на cppreference у нас есть пустой тип Emptyи типZ struct Empty {}; // empty class struct Z { char c; [[no_unique_address]] Empty e1, e2; }; Видимо, размер Zдолжен быть хотя бы 2потому, что типы e1и e2одинаковы. Тем не менее, я действительно хочу иметь …

6
Как сравнить общие структуры в C ++?
Я хочу сравнить структуры в общем виде, и я сделал что-то вроде этого (я не могу поделиться фактическим источником, поэтому попросите более подробную информацию, если это необходимо): template<typename Data> bool structCmp(Data data1, Data data2) { void* dataStart1 = (std::uint8_t*)&data1; void* dataStart2 = (std::uint8_t*)&data2; return memcmp(dataStart1, dataStart2, sizeof(Data)) == 0; } …
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.