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)
谢谢!
因为类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)