填充typedef结构中的int数组时出错

时间:2017-12-14 18:51:05

标签: c arrays struct int typedef

我尝试在Huffman结构中初始化代码数组,但是当我编译它时显示:

Error expected expression before '{' token.
我如何解决?

typedef struct {  
    char letter;  
    float p;  
    int code[10];  
    }Huffman ;  
    Huffman line[4];   

    line[1].code[10]= {1,0,0,0};  
    line[2].code[10]= {0,0,1,0,1};  
    line[3].code[10]= {1,0,0,0,0};

1 个答案:

答案 0 :(得分:1)

错误:错误是由于初始化造成的。

声明1:line[1].code[1] = 10; //WORKS
  声明2:line[2].code[10]= {0,0,1,0,1}; //Wrong

Statement2说出与编译器类似的内容:转到名为line[2]的结构数组并选择元素数组code转到其10元素,这是错误的,因为只为8个整数值保留了内存但是在C中没有绑定检查,因此非常好,并在那里粘贴{0,0,1,0,1}元素,这是不可能的,因为您将这些值粘贴到该元素。

更好的方法

   //Declaring variable SIZE thus prevent BOUND CHECKING.
     int size;        
     size = sizeof(line[1].code)/sizeof(line[0].code[0])); //COUNTING NO OF ELEMENTS
     for (loop = 0; loop<size; loop++)
         line[1].code[loop] = loop;            //INITIALING BY Values 0,1,2,3,4....