gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 07:32:03 25 4
gpt4 key购买 nike

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

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]

关于c++ - 如何正确访问指向二维数组的指针的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17474455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com