Tag: struct

分配结构字段时,“错误:赋值给表达式,数组类型错误”(C)

我是初学C程序员,昨天我学习了C结构的使用以及这些结构可能应用于特定问题的解决方案。 然而,当我尝试使用我的C IDE(Codeblocks 16.01)来学习C编程的这个方面时,我遇到了一个奇怪的问题。 代码如下: #include #define N 30 typedef struct{ char name[N]; char surname[N]; int age; } data; int main() { data s1; s1.name=”Paolo”; s1.surname = “Rossi”; s1.age = 19; getchar(); return 0; } 在编译期间,编译器(Windows下的GCC 4.9.3-1)向我报告了一个错误 “错误:赋值给表达式,数组类型错误” 在指导上 s1.name=”Paolo” s1.surname=”Rossi” 如果我这样做的话 data s1 = {“Paolo”, “Rossi”, 19}; 有用。 我究竟做错了什么?

C中的结构内存布局

我有一个C#背景。 我非常喜欢像C这样的低级语言。 在C#中, struct的内存由编译器默认布局。 编译器可以隐式地重新排序数据字段或填充字段之间的附加位。 因此,我必须指定一些特殊属性来覆盖此行为以获得精确布局。 AFAIK,C默认情况下不重新排序或对齐struct的内存布局。 但是,我听说有一个很难找到的例外。 什么是C的内存布局行为? 什么应该重新排序/对齐而不是?

有没有办法在C中循环使用不同类型元素的结构?

我的结构是这样的 typedef struct { type1 thing; type2 thing2; … typeN thingN; } my_struct 如何在循环中枚举struct childrens,例如while,或for?

C Typedef和Struct问题

这两个声明之间的区别是什么,并且优先于另一个? typedef struct IOPORT { GPIO_TypeDef* port; u16 pin; } IOPORT; typedef struct { GPIO_TypeDef* port; u16 pin; } IOPORT;

结构初始化C / C ++编程语言?

我可以使用代码进行struct初始化: struct struct_type_id struct_name_id = { value1, value2, value3 }; 但不能用: struct struct_type_id struct_name_id; struct_name_id = { value1, value2, value3 }; 为什么我能用前者做到这一点,但后者不能用gcc,g ++,vc2008,vc6?换句话说,为什么c / c ++编程语言不支持这种语法? 谢谢。

将一个结构指针转换为另一个 – C

请考虑以下代码。 enum type {CONS, ATOM, FUNC, LAMBDA}; typedef struct{ enum type type; } object; typedef struct { enum type type; object *car; object *cdr; } cons_object; object *cons (object *first, object *second) { cons_object *ptr = (cons_object *) malloc (sizeof (cons_object)); ptr->type = CONS; ptr->car = first; ptr->cdr = second; return (object *) ptr; } […]