Tag: 结构

在C ++代码中初始化C结构

有没有更好的方法来初始化C ++代码中的C结构? 我可以在变量声明点使用初始化列表; 但是,如果在编译时不知道所有参数,或者如果我没有声明本地/全局实例,那么这没有用,例如: 遗留C代码,它声明了结构,并且还使用了API typedef struct { int x, y, z; } MyStruct; 使用C库的C ++代码 void doSomething(std::vector &items) { items.push_back(MyStruct(5,rand()%100,items.size()));//doesn’t work because there is no such constructor items.push_back({5,rand()%100,items.size()});//not allowed either //works, but much more to write… MyStruct v; vx = 5; vy = rand()%100; vz = items.size(); items.push_back(v); } 创建本地实例,然后一次设置一个成员( myStruct.x = 5;等)是一个真正的痛苦,当尝试将20个不同的项添加到容器时有点难以阅读…

将数组与结构传递给函数

在C中,数组作为指针传递给函数。 结构可以通过值或地址(指针)传递给函数。 是否有任何特定原因导致我们无法按值传递数组,但我们可以按值传递structre?

在结构中定义宏的逻辑是什么?

正如标题中所显示的,我正在质疑在结构中定义宏的原因。 我经常在网络编程中看到这种方法,例如以下片段: struct sniff_tcp { u_short th_sport; /* source port */ u_short th_dport; /* destination port */ tcp_seq th_seq; /* sequence number */ tcp_seq th_ack; /* acknowledgement number */ u_char th_offx2; /* data offset, rsvd */ #define TH_OFF(th) (((th)->th_offx2 & 0xf0) >> 4) u_char th_flags; #define TH_FIN 0x01 #define TH_SYN 0x02 #define TH_RST 0x04 #define […]

将NULL转换为C中的结构指针?

在C中向结构指针转换NULL有什么好处吗? 例如: typedef struct List { …. } List; List *listPtr = ((List *) NULL) ; PostgreSQL源代码示例: #define NIL ((List *) NULL) http://doxygen.postgresql.org/pg__list_8h_source.html

字符数组和指针之间的区别

我在两个代码中做同样的事情。 在代码1中:我使用了char *并在main使用malloc分配空间。 在代码2中:我使用了char数组用于相同的目的。 但为什么输出会有所不同? 代码1: struct node2 { int data; char p[10]; }a,b; main() { a.data = 1; strcpy(ap,”stack”); b = a; printf(“%d %s\n”,b.data,bp); // output 1 stack strcpy(bp,”overflow”); printf(“%d %s\n”,b.data,bp); // output 1 overflow printf(“%d %s\n”,a.data,ap); // output 1 stack } 代码2: struct node1 { int data; char *p; }a,b; main() { a.data […]

没有命名成员的struct在哪里有用?

C标准为何以及在何处允许此代码编译? 它在哪里有用? struct foo { int : 12; };

动态大小的结构 – 学习C艰难的方式Ex17

我在学习C艰难的方式练习时遇到了麻烦。 该练习提供了一个简单的数据库程序,它具有固定的大小和行数。 您可以在下面看到构成数据库的结构。 #define MAX_DATA 512 #define MAX_ROWS 100 struct Address { int id; int set; char name[MAX_DATA]; char email[MAX_DATA]; }; struct Database { struct Address rows[MAX_ROWS]; }; struct Connection { FILE *file; struct Database *db; }; 任务是更改代码以接受MAX_DATA的参数,MAX_ROWS将它们存储在数据库结构中,并将其写入文件,从而创建一个可以任意resize的数据库。 我理解如何接受来自用户的MAX_DATA和MAX_ROWS,作为命令行参数 – 在文件中定义的函数中。 一旦我有这些值,我不知道如何将它们存储在数据库结构中并写入文件。 感谢任何能够提供帮助的人。 您可以在此处找到其余代码: http : //c.learncodethehardway.org/book/ex17.html

在main()或main()之外声明结构的位置?

案例1:在main()之外声明的结构正常工作 #include #include struct prod { int price,usold; }; int main() { struct prod *p,a; int billamt(struct prod *); int bill; printf(“enter the values \n”); scanf(“%d%d”,&p->price,&p->usold); bill=billamt(p); printf(“bill=%d”,bill); getch(); } int billamt(struct prod *i) { int b; b=(i->price*i->usold); return b; } 情况2:在main()内部声明给出错误 [错误]输入’main():: prod’,没有用于通过链接[-fpermissive] *声明函数’int billamt(main():: prod *)’的链接 #include #include int main() { struct prod […]

如何在C中动态创建和读取结构?

我怎么能做那样的事情(只是一个例子): any_struct *my_struct = create_struct(); add_struct_member(my_struct, “a”, int_member); add_struct_member(my_struct, “b”, float_member); 这样我就可以在这里使用给定的结构加载和使用“从外部”(在地址addressOfMyStruct )的结构实例? any_struct_instance *instance = instance(my_struct, addressOfMyStruct); int a = instance_get_member(instance, “a”); float b = instance_get_member(instance, “b”); 我也希望能够以这种方式动态创建结构实例。 我希望我很清楚我想做什么。 我知道C / Invoke能够做到这一点,但有没有一个单独的库可以做到这一点?

sizeof()函数如何适用于C中的Structures?

结构定义如下 typedef struct Sample { int test; char strtest; } Sample; 在Main Function中,我将Sizeof称为结构。 sizeof(struct Sample) 我听说sizeof在结构上的返回值可能不正确。 如果是这种情况,我该怎么做才能获得正确的价值?