在下面的C ++片段中,a = b可能是分配??:
unsigned int * a;
D3DCOLOR b[16];
a=(unsigned int)b;
这个赋值会将b数组的所有元素复制到一个?样式是否合适?
答案 0 :(得分:8)
首先,应该是:
a = (unsigned int *)b; // note the *
更重要的是,这只会使a
指向<{1}}的内容,并且不复制它。如果要复制数组,则必须明确地执行此操作,例如使用b
循环或for
,即如果您不想使用类和内容。
附注:要复制到std::copy
,您需要a
的内存!您可以在堆栈中执行此操作:
a
或动态(例如使用unsigned int a[16]; // 16 is an example
)。
答案 1 :(得分:-1)
您的代码无效,使用指针可以访问与您指向的对象相同的内存。 你到底想做什么?从你的代码中,我猜你所拥有的数组是一个位数组,你想要相应的无符号整数。 在这种情况下,做这样的事情:
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 ++中的位操作。
(注意:此代码假定大端位顺序)。