Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 在typedef结构中填充int数组时出错_C_Arrays_Struct_Int_Typedef - Fatal编程技术网

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

C 在typedef结构中填充int数组时出错,c,arrays,struct,int,typedef,C,Arrays,Struct,Int,Typedef,我试图在Huffman结构中初始化代码数组,但编译时显示: 在“{”标记之前预期表达式出错。如何修复它 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]

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

在“{”标记之前预期表达式出错。

如何修复它

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:
第[1]行。代码[1]=10;//有效

语句2:
行[2]。代码[10]={0,0,1,0,1};//错误

语句2与编译器类似:转到名为
line[2]
的结构数组,选择元素数组
code
转到它的10元素,这是错误的,因为只有8个整数值保留了内存,但由于在C中没有绑定检查,所以它非常正常,并粘贴一个{0,0,1,0,1}元素,这是不可能的,因为您要将这些值粘贴到该元素

更好的方法
//声明变量大小从而防止绑定检查。
整数大小;
size=sizeof(第[1]行。代码)/sizeof(第[0]行。代码[0]);//计算元素数

for(loop=0;loop
第[1]行)。代码[10]
是UB。编译器肯定会为此抱怨(赋值时类型不兼容)
code
只有8个元素。为什么要尝试赋值给索引10?赋值不能发生在函数
sizeof(第[1]行)/sizeof(int)之外
O!没错,你是对的!感谢你的帮助:)
   //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....