在以下 C++ 代码段中,是否可以进行 a=b 分配??:
unsigned int * a;
D3DCOLOR b[16];
a=(unsigned int)b;
这个赋值会将 b 数组的所有元素复制到 a 中吗?类型转换好吗?
在以下 C++ 代码段中,是否可以进行 a=b 分配??:
unsigned int * a;
D3DCOLOR b[16];
a=(unsigned int)b;
这个赋值会将 b 数组的所有元素复制到 a 中吗?类型转换好吗?
首先,它应该是:
a = (unsigned int *)b; // note the *
更重要的是,这只是a
指向 的内容b
,而不是复制它。如果要复制数组,则必须明确地进行,例如使用for
循环或std::copy
,也就是说,如果您不想使用类和其他东西。
旁注:要复制到a
,您需要内存a
!您可以在堆栈上执行此操作:
unsigned int a[16]; // 16 is an example
或动态(例如使用new
)。
您的代码将不起作用,使用指针可以访问与指向它的对象相同的内存。你到底想做什么?从您的代码中,我猜您拥有的数组是一个位数组,并且您想要相应的无符号整数。在这种情况下,请执行以下操作:
unsigned int a;
unsigned int length = 16;
D3DCOLOR b[length];
for(int i = 0; i < length; i++)
{
a |= b[(length-1) - i] << i;
}
这将获取每一位,将其移动所需的数量,然后将其写入 a. 如果您想了解更多信息,请查看 c/c++ 中的位操作。
(注意:此代码假定大端位序)。