我想将一个char数组分配给另一个,但以下内容不起作用。
unsigned char myval1[6] = {0x01, 0x01, 0x01, 0x01, 0x01, 0x01};
unsigned char myval2[6];
myval2 = &myval1[0];
答案 0 :(得分:2)
C-Array不可复制
你必须自己复制(使用std::copy
(C ++)或memcpy
(C))。
在C ++ 11中,您可以使用std::array
代替。
答案 1 :(得分:1)
这是你无法完成任务的一件事。一种可能性是
memcpy( myval2, myval1, sizeof(myval2) );
答案 2 :(得分:1)
在C
你没有分配数组。您应该使用memcpy()
函数来复制数组。
memcpy(myval2, myval1, sizeof(myval2));
答案 3 :(得分:0)
您可以尝试这样的事情......
unsigned char myval1[6] = {0x01, 0x01, 0x01, 0x01, 0x01, 0x01};
unsigned char *myval2;
myval2 = &myval1[0];
答案 4 :(得分:0)
不,你不能在C中分配数组。
您必须手动复制每个数组元素。执行此操作的标准库函数是memcpy()
:
memcpy(myval2, myval1, sizeof myval2);
最后一个参数是要复制的字节数,非常推荐使用sizeof
。请注意,如果myval1
小于而不是myval2
,则上述内容将是未定义的行为,因为它将超出myval1
的范围。你必须小心。
答案 5 :(得分:0)
一个很好的习惯用语是:
memcpy(&myval2, &myval1, sizeof myval2);
通过配对&x
和sizeof x
,您可以确保始终复制正确的字节数,即使您在其他地方使用变量名称犯了错误。
其他帖子中建议的版本仍有效,因为myval2
是一个数组,所以(void *)myval2 == (void *)&myval2
。
答案 6 :(得分:0)
试试这个
unsigned int myval1[6] = {0x01, 0x01, 0x01, 0x01, 0x01, 0x01};
unsigned int myval2[6];
unsigned int* add = &myval1[0];
cout << *add << endl;