结构内部的数组

i l*_*low 0 c++ arrays structure

所以我创建了一个struct,其唯一元素是指向数组的指针.当我初始化这个数组时,我得到一个分段错误.你能告诉我为什么吗?

这是代码:

typedef struct {
    int *data;
} A;

/* Class definition */
class C {
    A* a;
public:
    C(void);
};

/* Constructor */
C::C(void) {
    a->data = new int[10];
}

int main(void) {
    C();
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

jua*_*nza 7

因为类C包含一个指针,指针A尚未初始化.所以a->data在那个阶段没有初始化.

顺便说一下,你的结构A不包含"指向数组的指针",它包含一个指针int.它不一定必须初始化为指向动态分配的数组:

int n = 42;
A a;
a.data = &n;
Run Code Online (Sandbox Code Playgroud)

另外,你的声明A在C++中有点不寻常,与之不一致class C.通常使用此表单:

struct A {
  int* data;
};
Run Code Online (Sandbox Code Playgroud)