C++ 指向多维数组第n个元素的指针

C++ 指向多维数组第n个元素的指针,c++,arrays,pointers,C++,Arrays,Pointers,我想知道如何使用指向多维数组的指针访问该数组的第n个元素 假设我有以下几点 struct Struct_B { bool asdf; }; struct Struct_A { int X; int Y; Struct_B *ptr; }; typedef Struct_A new_typedef[10][20][30]; new_typedef Array; // Set values within Array, including correctly s

我想知道如何使用指向多维数组的指针访问该数组的第n个元素

假设我有以下几点

struct Struct_B
{
    bool asdf;
};

struct Struct_A
{
    int X;
    int Y;
    Struct_B *ptr;
};

typedef Struct_A new_typedef[10][20][30];

new_typedef Array;

// Set values within Array, including correctly setting ptr variable

// Within debugger, Array_ptr contains the correct data, identical to Array, as it should.
new_typedef* Array_ptr = &Array;

for ( int i = 0; i < 10; i++) {
    for ( int j = 0; j < 20; j++) {
        for (int k = 0; k < 30; k++) {
            // Crashes on this conditional'
            // Within debugger, asdf is in some random location in memory, implying I am not accessing it correctly.
            // Same problem exists if I attempt to access X or Y
            if ( (*Array_ptr)[i][j][k].ptr->asdf) {
                // Do stuff
            }
        }
    }
}
struct结构
{
布尔asdf;
};
结构体
{
int X;
int-Y;
结构B*ptr;
};
typedef Struct_一个新的_typedef[10][20][30];
新的_-typedef阵列;
//在数组中设置值,包括正确设置ptr变量
//在调试器中,Array_ptr包含与Array相同的正确数据。
新建_typedef*数组_ptr=&Array;
对于(int i=0;i<10;i++){
对于(int j=0;j<20;j++){
对于(int k=0;k<30;k++){
//在此条件下崩溃
//在调试器中,asdf位于内存中的某个随机位置,这意味着我没有正确访问它。
//如果我尝试访问X或Y,则存在相同的问题
if((*Array_ptr)[i][j][k].ptr->asdf){
//做事
}
}
}
}

您必须首先取消对指针的引用:

(*Array_ptr)[i][j][k].X = 5;

编辑:

if((*Array_ptr)[i][j][k].ptr->asdf)
崩溃


这是因为
.ptr
未初始化

这就是我最初实际拥有的。我进一步更新了我的第一个示例。在调试器中,Array_ptr正确地包含在数组中看到的所有数据。但是,我认为我没有正确地访问它,因为在调试器中查看它崩溃的条件会在内存中产生一些随机位置。@halexh它崩溃是因为
.ptr
未初始化并指向一个随机位置。@halexh,发布后,您不应该对问题中的代码进行重大更改。它使现有的答案无效(比如这一个)。对此很抱歉-我不知道除了更新原始答案之外,还有什么其他方法可以轻松传达答案