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
    ness
  • static\u cast
    不能删除
    常量,也不能在这些指针类型之间更改
  • 看起来您想要的是:

    int *b = reinterpret_cast<int *>(const_cast<unsigned int *>(a));
    

    那是你真正的密码吗
    getArray
    甚至没有
    return
    语句。除此之外,返回一个局部变量的地址(就像你想做的那样)是个坏消息。@CarlNorum
    getArray()
    只是用来替换对一个我无法控制的更大库的调用。-我同意传递原始指针不好,传递指针也可以。返回指向局部变量的指针是不正确的。为什么不直接用
    static
    声明
    a
    ?那么它将是正确的,不会让未来的读者感到困惑。那么将两者连接起来可能会奏效吗?这
    无符号int*b=const_cast(a)int*c=static_cast(b)时,code>至少丢弃
    const
    仍然失败。我将修改这个问题。不,您也不能使用
    static\u cast
    更改指针类型。编辑。
    int *b = (int *)a;