2014-12-04 341 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