C++ 如何正确访问指向二维数组的指针元素?

C++ 如何正确访问指向二维数组的指针元素?,c++,arrays,C++,Arrays,如何使用指向二维数组的指针访问该数组的元素 std::recursive_mutex *(*A)[2]; std::recursive_mutex *B[2]; B[0] = new std::recursive_mutex[some_size]; B[1] = new std::recursive_mutex[some_size]; A = &B; //accessing //A[0][0] //A[1] //A[1][0] //will not work (since the po

如何使用指向二维数组的指针访问该数组的元素

std::recursive_mutex *(*A)[2];
std::recursive_mutex *B[2];
B[0] = new std::recursive_mutex[some_size];
B[1] = new std::recursive_mutex[some_size];
A = &B;

//accessing
//A[0][0]
//A[1]
//A[1][0]
//will not work (since the pointers do not point to the same locations as
//B[0][0]
//B[1]
//B[1][0]

附加问题:有没有更好的方法来初始化一个文件?(不使用std::vector)

您的问题是忘记取消引用A,因为它是指向B的指针

#include <mutex>

int main(int argc, char* argv[])
{
    size_t some_size = 5;
    std::recursive_mutex *(*A)[2];
    std::recursive_mutex *B[2];
    B[0] = new std::recursive_mutex[some_size];
    B[1] = new std::recursive_mutex[some_size];
    A = &B;

    auto& x = A[0][0];      // resolved to be std::recursive_mutex*&
    auto& y = (*A)[0][0];   // resolved to be std::recursive_mutex&

    return 0;
}
#包括
int main(int argc,char*argv[])
{
尺寸t一些尺寸=5;
std::recursive_mutex*(*A)[2];
std::recursive_mutex*B[2];
B[0]=新的std::递归互斥[某些大小];
B[1]=新的std::递归互斥体[some_size];
A=&B;
auto&x=A[0][0];//解析为std::recursive_mutex*&
auto&y=(*A)[0][0];//解析为std::recursive_互斥体&
返回0;
}

正如你所看到的,当你做一个[0][0]的时候,我们得到了一个指向互斥体的指针,你想要的是互斥体本身,你通过取消对A的引用得到它,这样做:
(*A)[0][0]

你尝试过访问一个by:
(*A)[0][/code>?那不是一个二维数组,而是一个指向两个指针的数组。一个比奖金问题更好的问题是,为什么需要初始化该类型的对象?也许有更好的方法