user-0 提问: 数据结构求助  总是访问越界但不知道是哪出错了

回复:
user: user-0
content: 引用 5 楼 自信男孩的回复:#include <iostream> #include <string.h> #include <cstdio> #include <cstdlib> using namespace std;  #define MAX_CAR_NUMS     5 typedef struct che {     string chepai; //车牌号     //int intime=-1; //进入停车场的时间     int intime; //进入停车场的时间     //int outtime=-1; //出停车场的时间     int outtime; //出停车场的时间 }*car;  typedef struct tcc {     car tcc[MAX_CAR_NUMS];     //int top = -1;     int top; }stop;  stop* initstop() {     stop *dfe;     int i;      dfe = (stop*)malloc(sizeof(stop));     if (!dfe) {         return NULL;     }     dfe->top = -1;     for (i = 0; i < MAX_CAR_NUMS; i++) {         dfe->tcc[i] = (car)malloc(sizeof(struct che));         if (!dfe->tcc[i])             exit(0);         dfe->tcc[i]->intime = -1;         dfe->tcc[i]->outtime = -1;     }      return dfe; }  void come() {     stop* dfe = initstop();     printf("%d", dfe->tcc[0]->intime); }  void out() { } int welcom() {     int a;     printf("欢迎使用大肥鹅停车系统:)\n输入想要实现的功能\n");     printf("1.停车\n2.取车\n其他.退出\n");     scanf_s("%d", &a);     if (a == 1)     {         come();         return 3;     }     else if (a == 2)     {         out();         return 3;     }     else     {         return 1;     } } int main() {     int a = 3;     while(a==3)         a=welcom();  }  供参考～  数据结构在声明时是不能初始化的吧。  出现段错误是因为没有对野指针申请空间导致～ 同样感谢你细心的解答  辛苦了🙏

user: user-1
content: #include <iostream> #include <string.h> #include <cstdio> #include <cstdlib> using namespace std;  #define MAX_CAR_NUMS     5 typedef struct che {     string chepai; //车牌号     //int intime=-1; //进入停车场的时间     int intime; //进入停车场的时间     //int outtime=-1; //出停车场的时间     int outtime; //出停车场的时间 }*car;  typedef struct tcc {     car tcc[MAX_CAR_NUMS];     //int top = -1;     int top; }stop;  stop* initstop() {     stop *dfe;     int i;      dfe = (stop*)malloc(sizeof(stop));     if (!dfe) {         return NULL;     }     dfe->top = -1;     for (i = 0; i < MAX_CAR_NUMS; i++) {         dfe->tcc[i] = (car)malloc(sizeof(struct che));         if (!dfe->tcc[i])             exit(0);         dfe->tcc[i]->intime = -1;         dfe->tcc[i]->outtime = -1;     }      return dfe; }  void come() {     stop* dfe = initstop();     printf("%d", dfe->tcc[0]->intime); }  void out() { } int welcom() {     int a;     printf("欢迎使用大肥鹅停车系统:)\n输入想要实现的功能\n");     printf("1.停车\n2.取车\n其他.退出\n");     scanf_s("%d", &a);     if (a == 1)     {         come();         return 3;     }     else if (a == 2)     {         out();         return 3;     }     else     {         return 1;     } } int main() {     int a = 3;     while(a==3)         a=welcom();  }  供参考～  数据结构在声明时是不能初始化的吧。  出现段错误是因为没有对野指针申请空间导致～

user: user-0
content: 引用 3 楼 寻开心的回复:car是指针类型，所以才导致分配stop的时候没有对tcc[]里面的元素做初始化 导致tcc[0]是野指针，此时访问intime就是出错  把car类型改成非指针类型，可以避免的只是这个问题： printf("%d", dfe->tcc[0]->intime);     此处要同步改为。 tcc[00.intime 的访问方式。 多谢你的耐心回答  听懂了

user: user-2
content: car是指针类型，所以才导致分配stop的时候没有对tcc[]里面的元素做初始化 导致tcc[0]是野指针，此时访问intime就是出错  把car类型改成非指针类型，可以避免的只是这个问题： printf("%d", dfe->tcc[0]->intime);     此处要同步改为。 tcc[00.intime 的访问方式。

user: user-0
content: 引用 1 楼 寻开心的回复:dfe = (stop*)malloc(sizeof(stop)); 这里只是把dfs空间分配出来了 但是其中的car空间并没有分配呢  typedef struct che { string chepai; //车牌号 int intime=-1; //进入停车场的时间 int outtime=-1; //出停车场的时间 }*car;  这里把*car，变成car  否则tcc里面只保留了五个指针， 他们对应的内存没有被malloc呢，直接用自然不对 就是把*car换成car应该就没事了是吗

user: user-2
content: dfe = (stop*)malloc(sizeof(stop)); 这里只是把dfs空间分配出来了 但是其中的car空间并没有分配呢  typedef struct che { string chepai; //车牌号 int intime=-1; //进入停车场的时间 int outtime=-1; //出停车场的时间 }*car;  这里把*car，变成car  否则tcc里面只保留了五个指针， 他们对应的内存没有被malloc呢，直接用自然不对