Char数组赋值给另一个char数组

时间:2014-04-07 08:44:44

标签: c arrays char

我想将一个char数组分配给另一个,但以下内容不起作用。

 unsigned char myval1[6] = {0x01, 0x01, 0x01, 0x01, 0x01, 0x01};
 unsigned char myval2[6];
 myval2 = &myval1[0];

7 个答案:

答案 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);

通过配对&xsizeof 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;