关于定义结构体指针数组

Posted anjiale

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于定义结构体指针数组相关的知识,希望对你有一定的参考价值。

    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;
}
 

以上是关于关于定义结构体指针数组的主要内容,如果未能解决你的问题,请参考以下文章

在程序中用typedef定义结构体

关于C语言结构体指针做函数形参的问题

我写了一个程序,利用数组,结构体,函数,指针,实现按学生的年龄从大到小输出学生的姓名和年龄,代码如下

关于结构体指针的使用

C语言中关于结构体指针为啥不能在函数内赋初值的问题?

go语言基础函数,数组,指针,结构体