我正在学习C并对结构有疑问.
我有一个
struct myStruct {
char member1[16];
char member2[10];
char member3[4];
};
Run Code Online (Sandbox Code Playgroud)
这应该至少需要30个字节的内存来存储.是否可以将所有这些数据复制到变量中char foo[30]
?语法是什么?
Car*_*rum 14
你不能直接复制整个东西,因为编译器可能会随意决定如何填充/打包这个结构.你需要三个memcpy
电话:
struct myStruct s;
// initialize s
memcpy(foo, s.member1, sizeof s.member1);
memcpy(foo + sizeof s.member1, s.member2, sizeof s.member2);
memcpy(foo + sizeof s.member1 + sizeof s.member2, s.member3, sizeof s.member3);
Run Code Online (Sandbox Code Playgroud)
的大小struct myStruct
是sizeof(struct myStruct)
,仅此而已。至少为30,但可以更大。
你可以这样做:
char foo[sizeof(struct myStruct)];
struct myStruct x; /* populate */
memcpy(foo, &x, sizeof x);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
21626 次 |
最近记录: |