Tag: struct

Имеет ли смысл определять структуру с элементом ссылочного типа?

Есть ли смысл в определении структуры с элементом ссылочного типа (и не определяя его как class)? Например, чтобы определить эту структуру: public struct SomeStruct { string name; Int32 place; } Я спрашиваю, потому что я знаю, что struct является типом значения, и определить в нем какой-то ссылочный тип не имеет никакого смысла. Я прав? Может […]

Почему открытые поля быстрее, чем свойства?

Я Vector3 в XNA и видел, что class Vector3 в нем использует публичные поля вместо свойств. Я попробовал быстрый тест и обнаружил, что для struct разница довольно драматична (добавление двух векторов вместе 100 миллионов раз заняло 2.0 с свойствами и 1.4 с полями). Для ссылочного типа разница не кажется такой большой, но она есть. Так […]

C инициализировать массив внутри структуры

Я хочу иметь массив переменной длины, содержащийся внутри структуры, но у меня проблемы с его инициализацией. struct Grid { int rows; int cols; int grid[]; } int main() { struct Grid testgrid = {1, 3, {4, 5, 6}}; } Все, что я пробую, дает мне ошибку «ошибка: нестатическая инициализация элемента гибкого массива».

Что нужно переопределить в структуре, чтобы обеспечить правильное функционирование равенства?

Как говорится в заголовке: мне нужно переопределить оператор == ? как насчет .Equals() ? Что-нибудь мне не хватает?

как назначить сразу несколько значений в структуру?

Я могу сделать это при инициализации для структуры Foo: Foo foo = {bunch, of, things, initialized}; но я не могу этого сделать: Foo foo; foo = {bunch, of, things, initialized}; Итак, два вопроса: Почему я не могу сделать последнее, является ли первый конструктор только для инициализации? Как я могу сделать что-то похожее на второй пример, […]

myView.frame.origin.x = значение; не работает. Но почему?

Я знаю, что не могу использовать это: myView.frame.origin.x = 25.0; и что я должен использовать это вместо этого: CGRect myFrame = myView.frame; myFrame.origin.x = 25.0; myView.frame = myFrame; И я делаю это все время, но я не знаю, почему я должен так поступать. Я хотел бы заполнить этот пробел в своем понимании. Может кто-нибудь объяснить? […]

значение по умолчанию для члена struct в 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: error: ‘struct ‘ has no […]

C – освобождение структур

Предположим, у меня есть эта структура typedef struct person{ char firstName[100], surName[51] } PERSON; и я выделяю пространство malloc и заполняя его некоторыми значениями PERSON *testPerson = (PERSON*) malloc(sizeof(PERSON)); strcpy(testPerson->firstName, “Jack”); strcpy(testPerson->surName, “Daniels”); Каков правильный и безопасный способ освободить всю память, занятую этой структурой? Является «бесплатным (testPerson)»; достаточно или мне нужно освободить атрибут каждой структуры […]

C: sizeof single struct member

Я пытаюсь объявить структуру, которая зависит от другой структуры. Я хочу, чтобы sizeof был безопасным / педантичным. typedef struct _parent { float calc ; char text[255] ; int used ; } parent_t ; Теперь я хочу объявить struct child_t который имеет тот же размер, что и parent_t.text . Как я могу это сделать? (Псевдокод ниже). […]

Почему «typdef struct {struct S * s; } S; “, содержащий указатель на компиляцию того же типа?

Я пытаюсь typedef struct которая содержит указатель на другой из того же типа. То, что я думал, будет лучшей версией: typedef struct Element { char value; struct Element *next; } Element; Почему этот вариант также компилируется + выполняется ?: typedef struct { char value; struct Element *next; } Element; Чтобы описать первое, я бы сказал: […]

Давайте будем гением компьютера.