C 指向结构的指针指向结构的指针

C 指向结构的指针指向结构的指针,c,C,我不能让它工作! 抛出seg错误 #include <stdio.h> #include <stdlib.h> typedef struct { size_t NbOfElmts; float * Weights; int * Areas; } ListOfCoeff; typedef struct { size_t NbOfElmts; ListOfCoeff * Elmts; } SetOfList

我不能让它工作! 抛出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;


}

您尚未为列表分配任何内存。

这是一个次要问题,但:int N=10;浮点数*A=malloc(N*sizeof(*A));表示指向浮点“a”的指针指向浮点指针大小的10倍。我想你的意思是sizeof(float)而不是指向float的指针。@matthewcarey我觉得这是对的,也许你忽略了sizeof表达式中的
*
。是的,你是对的,我的*有点纠结:我完全忘了!谢谢
( (theList[ i ].Elmts)->Weights)[ i ] = A[ i ];