2015-05-22 43 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()
相關問題