C语言,结构体用数组memcpy的问题
定义结构体structaaa{charsz1[5];charsz2[10];};structbbb{charsz1[5];charsz2[10];charc1;};定义一...
定义结构体
struct aaa
{
char sz1[5];
char sz2[10];
};
struct bbb
{
char sz1[5];
char sz2[10];
char c1;
};
定义一个数组:char szBuf[100];
问题:
假设szBuf[0]~szBuf[4]存放的是我要赋给结构体aaa中的sz1的数据,szBuf[5]~szBuf[14]存放的是我要赋值给aaa中sz2的数据,那么我可以用memcpy(&aaa, szBuf, sizeof(struct aaa))吗???
又假设zBuf[0]~szBuf[4]存放的是我要赋给结构体bbb中的sz1的数据,szBuf[5]~szBuf[14]存放的是我要赋值给bbb中sz2的数据,szBuf[15] = ‘0‘存放的是要给bbb中c1的,那么我可以用memcpy(&bbb, szBuf, sizeof(struct bbb))吗???
这个问题一直困扰我,请大神解答一下,急~~ 展开
struct aaa
{
char sz1[5];
char sz2[10];
};
struct bbb
{
char sz1[5];
char sz2[10];
char c1;
};
定义一个数组:char szBuf[100];
问题:
假设szBuf[0]~szBuf[4]存放的是我要赋给结构体aaa中的sz1的数据,szBuf[5]~szBuf[14]存放的是我要赋值给aaa中sz2的数据,那么我可以用memcpy(&aaa, szBuf, sizeof(struct aaa))吗???
又假设zBuf[0]~szBuf[4]存放的是我要赋给结构体bbb中的sz1的数据,szBuf[5]~szBuf[14]存放的是我要赋值给bbb中sz2的数据,szBuf[15] = ‘0‘存放的是要给bbb中c1的,那么我可以用memcpy(&bbb, szBuf, sizeof(struct bbb))吗???
这个问题一直困扰我,请大神解答一下,急~~ 展开
4个回答
展开全部
追问
只要都是char型就都可以吗,不管是char数组还是char字符,是吗?
追答
是的,只要是x86下的C编译器,都可以,单片机上我就不知道了
X86下的 你不需要指定#pragma pack 里面如果都是char类型的,无论数组与否(一个数组就相当于多个char)都是紧密连着的
展开全部
和编译器有关,一般不推荐这样做
结构体成员之间在内存空间不一定是连续的,其中间可能包含内存对齐空间以提高CPU的访问效率
结构体成员之间在内存空间不一定是连续的,其中间可能包含内存对齐空间以提高CPU的访问效率
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该对结构内的成员一个个单独操作,写质量高的代码。也许你在某个环境下测试通过,但是给程序留下了隐患 。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-08-31
展开全部
可能会有对齐的问题,在代码里加上#pragma pack (1)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询