【问题标题】:Two dimensional array of pointers to structure (dynamic)结构指针的二维数组(动态)
【发布时间】:2012-09-09 21:16:46
【问题描述】:

所以我正在编写一段代码,它应该使用指向结构的指针表;在这里你有那个结构类型

 #define liczbafunkcji 5
 #define wielkosclasu 0
 typedef struct drzewo typ;
 struct drzewo {

    typ *right;
    typ *left;
    typ *up;
    char znak;
    unsigned int instrukcje;
    unsigned int opcje;
    float value;
  };
 typ * t[wielkosclasu][rozmiar];

这里有一个分配函数

void przydziel(void)
{
int i,g;

for(i=0;i<wielkosclasu;i++)
{
    for(g=0;g<rozmiar;i++)
    {
            t[i][g]=(typ*)malloc(sizeof(typ));
    }
}
}

所以当我做这样的事情时 (*t[numerdrzewa][0]).up=NULL; 它带有“ SIGSEGV,分段错误”。 (用gdb检查)在那一行,我不确定出了什么问题。

【问题讨论】:

  • 您知道,t[numerdrzewa][0]-&gt;up 的工作方式与您到达那里的方式相同,不需要额外的括号。作为更一般的情况,(*ptr).something 等价于ptr-&gt;something
  • typ * t[0][rozmiar]; 这样的东西永远不应该编译,C 不允许数组为空。所以你没有向我们展示到底发生了什么。

标签: c pointers dynamic malloc structure


【解决方案1】:

wielkosclasu0,所以数组是空的,t[numerdrzewa][0] 总是在数组之外。此外,您的函数什么也不做。

【讨论】:

  • 我很确定你是对的。但是,该函数应该将内存随机分配给数组,因此它不会将整个结构块存储在内存中的一个位置。这是它应该做的。
猜你喜欢
  • 1970-01-01
  • 2012-10-24
  • 1970-01-01
  • 2013-04-06
  • 2020-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多