为什么我会得到分段错误(嵌套结构)?

时间:2015-05-22 20:46:03

标签: c data-structures

我在大约3个小时前遇到了分段故障问题,而且我并没有真正弄清楚原因。我试图将内存分配给terminos(struct),但我不能。我希望你能帮助我

    #include<stdio.h>
    #include<stdlib.h>
    typedef struct termino
    {
      int exponente;
      float cociente;
    } termino;

    typedef struct polinomio
    {

  termino* polinomio;
  int size;
} polinomio;

main()
{


int size_;
  termino* terminos;
  polinomio *polinomio_;
  polinomio_ = malloc(sizeof(polinomio));
  printf("%d",(sizeof(polinomio_)*2));

  printf("Bienvenido al cálculo de operaciones usando 1 polinomio.\n");
  printf("Ingrese la cantidad de términos que tendrá el polinomio.");  
  scanf("%d",size_);
  //assigning memory for terminos.
  terminos =(termino*) malloc(sizeof(termino) * size_);

1 个答案:

答案 0 :(得分:1)

这里的主要问题是

 scanf("%d",size_);

更改为

 scanf("%d",&size_);

因为,scanf()需要一个指向数据的类型参数。

相关,来自C11标准,章节§7.21.6.2,(强调我的

  

d

     

匹配可选的带符号十进制整数,其格式与   期望strtol()函数的主题序列,其值为10,用于基本参数。 相应的参数应为指向有符号整数的指针。

除此之外,

  1. main()的推荐签名为int main(void)
  2. sizeof的正确格式说明符为%zu
  3. Please do not cast the result of malloc()