2015-05-22 46 views
-1

大约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_); 
+0

'主()' - >'INT主(无效)' –

+1

C和C++是两个不同的语言。此外,现在听起来像是熟悉调试器的好时机。 “我有段错误,不知道为什么”没有附加信息不是一个有效的问题。如果您正在使用'gcc',请在继续之前将您的命令行更改为'gcc -Wall -Werror'。如果您使用的是Visual Studio **请注意发布的任何编译器警告。他们在那里是有原因的。 –

回答

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()
相关问题