2014-12-04 328 views
-2

我無法完成工作! 引發seg故障。指向結構的指針指向結構

#include <stdio.h> 
#include <stdlib.h> 

typedef struct 
{ 
    size_t NbOfElmts; 

    float * Weights; 
    int * Areas; 

} ListOfCoeff; 

typedef struct 
{ 
    size_t NbOfElmts; 

    ListOfCoeff * Elmts; 


} SetOfListsOfCoeff; 



int main(int argc, const char* argv[]){ 

    SetOfListsOfCoeff * theList; 

    int N = 10; 
    float *A = malloc(N * sizeof(*A)); 

    for (int i = 0; i < N; i++) 
     A[ i ] = i; 


    for (int i = 0; i < N; i++) 
     ((theList[ i ].Elmts)->Weights)[ i ] = A[ i ]; 


    for (int i = 0; i < N; i++) 
     printf("\n List = %f", ((theList[ i ].Elmts)->Weights)[ i ]); 

return 0; 


} 

在該行的問題:

((theList[ i ].Elmts)->Weights)[ i ] = A[ i ]; 
+0

這是一個小問題,但是: int N = 10; float * A = malloc(N * sizeof(* A)); 表示指向浮點「A」的指針指向浮點指針大小的10倍。我認爲你的意思是sizeof(float)不是指向float的指針。 – 2014-12-04 16:01:26

+0

@MatthewVCarey它看起來對我來說是正確的,也許你忽略了sizeof表達式中的'*' – 2014-12-04 16:48:08

+0

是的,你是對的,我正在扭曲我的*。 – 2014-12-04 21:47:50

回答

2

您還沒有分配給任何的thelist內存。

+0

:我完全忘了!謝謝! – George 2014-12-04 16:20:22