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

How to access elements of a pointer to 2 dimensional array correctly?

本文关键字:指针 元素 二维数组 何正确 访问      更新时间:2023-10-16

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

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]

额外的问题:有更好的方法初始化a吗?(不使用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;
}

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