我可以用这种方式将数组转换为指针并返回指向常量的指针吗?

Can I convert an array in such a way to Pointer and return a pointer to a constant?

本文关键字:指针 返回 常量 方式 转换 数组 我可以      更新时间:2023-10-16

可以将数组转换为指针并返回指向常量的指针吗?在内存分配方面是否正确?

const int* convert_vector_to_pointer(std::vector<std::pair<int, int> >& v)
{
    std::vector<std::pair<int, int> >::iterator it = v.begin();
    int* a = new int[2*v.size()];
    int i = 0;
    for(; it != v.end(); ++it)
    {
        if(i < 2*v.size())
        {
            a[i] = (*it).first;
            a[i + 1] = (*it).first;
            i += 2;
        }
    }
    const int* b = const_cast<const int*>(a);
    return b;
}

函数的问题是您在函数内分配数组并返回指向它的const指针。任何一个本身都是好的,但它一起意味着调用代码将获得deleteconst对象的任务,这是未定义的行为。所以你的例子不太对