Arrays 如何将常量无符号整数数组强制转换为整数数组
我想将Arrays 如何将常量无符号整数数组强制转换为整数数组,arrays,casting,integer,constants,unsigned-integer,Arrays,Casting,Integer,Constants,Unsigned Integer,我想将const unsigned int*数组强制转换为int*数组。 但是,static_cast和const_cast失败 const unsigned int*getArray() { 静态无符号整数a[3]; a[0]=0; a[1]=1; a[2]=2; 返回a; } int main() { 常量unsigned int*a=getArray(); const_cast(a);//失败 静态_cast(a);//失败 } const\u cast无法更改类型,只能更改constn
const unsigned int*
数组强制转换为int*
数组。
但是,static_cast
和const_cast
失败
const unsigned int*getArray()
{
静态无符号整数a[3];
a[0]=0;
a[1]=1;
a[2]=2;
返回a;
}
int main()
{
常量unsigned int*a=getArray();
const_cast(a);//失败
静态_cast(a);//失败
}
const\u cast
无法更改类型,只能更改const
nessstatic\u cast
不能删除常量,也不能在这些指针类型之间更改
int *b = reinterpret_cast<int *>(const_cast<unsigned int *>(a));
那是你真正的密码吗
getArray
甚至没有return
语句。除此之外,返回一个局部变量的地址(就像你想做的那样)是个坏消息。@CarlNorumgetArray()
只是用来替换对一个我无法控制的更大库的调用。-我同意传递原始指针不好,传递指针也可以。返回指向局部变量的指针是不正确的。为什么不直接用static
声明a
?那么它将是正确的,不会让未来的读者感到困惑。那么将两者连接起来可能会奏效吗?这无符号int*b=const_cast(a)当这个int*c=static_cast(b)时,code>至少丢弃const
代码>仍然失败。我将修改这个问题。不,您也不能使用static\u cast
更改指针类型。编辑。
int *b = (int *)a;