C 将字符数组分配给另一个字符数组
我想将一个字符数组分配给另一个字符数组,但以下操作不起作用C 将字符数组分配给另一个字符数组,c,arrays,char,C,Arrays,Char,我想将一个字符数组分配给另一个字符数组,但以下操作不起作用 unsigned char myval1[6] = {0x01, 0x01, 0x01, 0x01, 0x01, 0x01}; unsigned char myval2[6]; myval2 = &myval1[0]; 你可以试试这样的 unsigned char myval1[6] = {0x01, 0x01, 0x01, 0x01, 0x01, 0x01}; unsigned char *myval2; myva
unsigned char myval1[6] = {0x01, 0x01, 0x01, 0x01, 0x01, 0x01};
unsigned char myval2[6];
myval2 = &myval1[0];
你可以试试这样的
unsigned char myval1[6] = {0x01, 0x01, 0x01, 0x01, 0x01, 0x01};
unsigned char *myval2;
myval2 = &myval1[0];
你可以试试这样的
unsigned char myval1[6] = {0x01, 0x01, 0x01, 0x01, 0x01, 0x01};
unsigned char *myval2;
myval2 = &myval1[0];
这是一件你不能做的事情。一种可能性是
memcpy( myval2, myval1, sizeof(myval2) );
这是一件你不能做的事情。一种可能性是
memcpy( myval2, myval1, sizeof(myval2) );
在
C
中,不能分配数组。您应该使用memcpy()
函数来复制数组
memcpy(myval2, myval1, sizeof(myval2));
在
C
中,不能分配数组。您应该使用memcpy()
函数来复制数组
memcpy(myval2, myval1, sizeof(myval2));
C-数组不可复制分配。
您必须自己复制(使用
std::copy
(C++)或memcpy
(C))。在C++11中,您可以改用
std::array
。C-array不可复制分配。您必须自己复制(使用
std::copy
(C++)或memcpy
(C))。在C++11中,可以改用
std::array
。否,不能在C中分配数组
必须手动复制每个数组元素。执行此操作的标准库函数是memcpy()
:
最后一个参数是要复制的字节数,建议使用
sizeof
。请注意,如果myval1
小于myval2
,则上述行为将是未定义的行为,因为它将读取超出myval1
的范围。您必须小心。不,您不能在C中分配数组
必须手动复制每个数组元素。执行此操作的标准库函数是memcpy()
:
最后一个参数是要复制的字节数,建议使用
sizeof
。请注意,如果myval1
小于myval2
,则上述行为将是未定义的行为,因为它将读取超出myval1
的范围。你必须小心。这方面的一个好习惯用法是:
memcpy(&myval2, &myval1, sizeof myval2);
通过将&x
和sizeof x
配对,您可以确保始终复制正确的字节数,即使在其他地方使用变量名时出错
其他帖子中建议的版本仍然有效,因为
myval2
是一个数组,所以(void*)myval2==(void*)和myval2
这是一个很好的习惯用法:
memcpy(&myval2, &myval1, sizeof myval2);
通过将&x
和sizeof x
配对,您可以确保始终复制正确的字节数,即使在其他地方使用变量名时出错
其他帖子中建议的版本仍然有效,因为myval2
是一个数组,所以(void*)myval2==(void*)&myval2
试试这个
unsigned int myval1[6] = {0x01, 0x01, 0x01, 0x01, 0x01, 0x01};
unsigned int myval2[6];
unsigned int* add = &myval1[0];
cout << *add << endl;
unsigned int-myval1[6]={0x01,0x01,0x01,0x01,0x01};
无符号整数myval2[6];
无符号int*add=&myval1[0];
试试这个
unsigned int myval1[6] = {0x01, 0x01, 0x01, 0x01, 0x01, 0x01};
unsigned int myval2[6];
unsigned int* add = &myval1[0];
cout << *add << endl;
unsigned int-myval1[6]={0x01,0x01,0x01,0x01,0x01};
无符号整数myval2[6];
无符号int*add=&myval1[0];
可能不是OP想要的。它为myval1创建了一个别名,并且不复制任何值。这可能不是OP所想的。它为myval1创建别名,不复制任何值。您尝试执行的操作会导致编译器错误,因为此处的数组变量myval1、myval2始终是常量类型,因此您无法修改解决方案中实际执行的数组的基址。您可以按照下面给出的任何答案复制数组。您尝试执行的操作会导致编译器错误,因为此处的数组变量myval1、myval2始终是常量类型,因此您无法修改解决方案中实际执行的数组的基地址。您可以按照下面给出的任何答案复制数组。这如何将myval1
的值复制到maval2
?这里没有myval2,您需要使用变量add,add++访问下一个值。是变量add address将指向myval1的起始地址,因此*add将打印1*add++=1[myval1[1]]*add++=1[myval1[2]]这如何将myval1
的值复制到maval2
?这里没有myval2,您需要使用变量add,add++来访问下一个值。是变量add address将指向myval1的起始地址,因此*add将打印1*add++=1[myval1[1]]*add++=1[myval1[2]]