首页 > 编程语言 > 详细

关于定义结构体指针数组

时间:2018-03-24 23:22:07      阅读:242      评论:0      收藏:0      [点我收藏+]
    typedef int score;
    typedef struct tnode *ptrtonode;
    typedef ptrtonode tree; 
    struct tnode{
         score s;
         tree next;
         bool know;
    }; 

    scanf("%d",&n);
    tree t[n];

    for(i=0;i<n;i++){
        scanf("%d",&x);
        t[i]->s=x;
      t[i]->next=NULL;
      t[i]->know=false;
  }

此声明仅保留内存空间。由于n没有在编译时定义,数组的内容包含垃圾值。

  tree t[n];

任何访问都t[i]将导致程序访问内存位置,用存在于其中的值表示t[i],很可能是无效内存位置的地址。这会导致你的崩溃。在其他情况下,它可能会导致程序无关部分的内存损坏,并产生不正确的结果或再次崩溃。

需要在分配节点之前初始化数组元素。

for(i=0;i<n;i++){
    scanf("%d",&x);
    t[i] = (struct tnode *)malloc(sizeof(tnode)); // this was missing.
    t[i]->s=x;
    t[i]->next=NULL;
    t[i]->know=false;
}
 

关于定义结构体指针数组

原文:https://www.cnblogs.com/anjiale/p/8641890.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!