我有一个关于在结构及其可靠性上使用memset和memcopy的查询。对于如:Memcpy和Memset在C中的短类型结构
我有一个代码,看起来像这样
typedef struct
{
short a[10];
short b[10];
}tDataStruct;
tDataStruct m,n;
memset(&m, 2, sizeof(m));
memcpy(&n,&m,sizeof(m));
我的问题是,
1):在memset的,如果我设置为0,它是好的。但是,当设置2我得到m.a和m.b为514而不是2.当我把它们作为字符而不是短的它是好的。这是否意味着我们不能将memset用于除0之外的任何初始化? 2):在short类型的上面两个结构之间做memcopy是否可靠?我有一个巨大的 字符串a,b,c,d,e ...我需要确保副本是一对一完美的。 3):我最好在单个数组上使用memset和memcopy,而不是像上面那样收集结构?
一个多个查询,
在药结构上面我有变量数组。但是,如果我通过指针,这些阵列 ,我想在一个结构
typedef struct
{
short *pa[10];
short *pb[10];
}tDataStruct;
tDataStruct m,n;
memset(&m, 2, sizeof(m));
memcpy(&n,&m,sizeof(m));
收集这些指针在这种情况下,如果我或存储器复制的memset的它只会改变地址,而不是价值。我如何改变这些值呢?原型是否错误?
请建议。您的投入都非常小鬼
感谢 DSP家伙
嗨理查德,感谢您的答复。我的问题米是我的所有数据为16位字。如果memset只在字节上工作,那么我不能在单词上使用它,因为它给了我错误的答案。它是否正确? – user437777 2012-07-27 05:44:15
你有两个例外是正确的:你可以用它来填充0或-1(0xFF)。对其他值不太有用。 – 2012-07-27 05:48:12
谢谢理查德。现在清楚了。我已经更新了一个查询,将不胜感激您的输入 – user437777 2012-07-27 05:51:29