动态数组和结构

时间:2011-03-24 02:41:08

标签: c c99

谢谢!我只需要将作业的右侧强加给Term。

我必须制作一个动态的多项式数组,每个多项式都有一个动态的术语数组。当给出一个指数和系数时,我得到一个错误“'{'token'之前的预期表达式。在分配值时我做错了什么?

此外,是否有一种简单的方法可以保持按指​​数排序的动态数组?我只是计划循环,打印最大值,但更愿意按顺序存储它们。

谢谢!

polynomialArray[index].polynomialTerm[0] = {exponent, coefficient};  // ISSUE HERE

更改为

polynomialArray[index].polynomialTerm[0] = (Term){exponent, coefficient};

4 个答案:

答案 0 :(得分:2)

polynomialArray[index].polynomialTerm[0]->exponent = exponent;
polynomialArray[index].polynomialTerm[0]->coefficient = coefficient; 

答案 1 :(得分:2)

您的代码中存在效率问题:

  if(index > (sizeof(polynomialArray)/sizeof(Polynomial)))
      polynomialArray = (Polynomial*)realloc(polynomialArray, index * sizeof(Polynomial));

因为 polynomialArray 是指针,我认为 sizeof(polynomialArray)总是4或8(64位系统)。因此,只要 index 大于0,上述 if 语句将始终为true。

答案 2 :(得分:1)

如果这是C99,我认为你需要

polynomialArray[index].polynomialTerm[0] = (Term){exponent, coefficient};

答案 3 :(得分:0)

您不能将此类值赋值(仅在声明期间)。

您应该这样分配:

polynomialArray[index].polynomialTerm[0].exponent = exponent;
polynomialArray[index].polynomialTerm[0].coefficient = coefficient;

关于另一个问题,你真的不需要在这里断言。如果指针具有分配给它的值malloc,则指针不会为NULL。如果没有,最好是NULL,所以你可以测试malloc是否失败。

要订购,您需要使用某种排序算法进行订购。我认为,如果你正在寻找一种简单的方法,你做的方式很好。如果要订购(如实时应用程序)至关重要,那么您需要重新考虑该方法。如果没有,请保持并继续前进!

保重, 贝乔