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

标签 c arrays struct int typedef

我尝试初始化霍夫曼结构中的代码数组,但当我编译时它显示:

“{”标记之前的预期表达式错误。
我该如何修复它?

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:line[1].code[1] = 10;//作品
语句2: line[2].code[10]= {0,0,1,0,1};//错误

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.... 

关于c - 在 typedef 结构中填充 int 数组时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47820247/

相关文章:

c - Nativeint Bigarray 似乎未签名

c - 结束应用程序的 Xcode 信号

java - 如何在数组中搜索并从方法返回?

C- 具有分配字符的结构 *

c - 在 C 结构中初始化值

直接从 typedef 结构定义创建指针

创建均匀分布的 double 值数组

c++ - 类的条件编译

javascript - 如何在 PHP 中编辑数组中的部分字符串值并在 Javascript 中使用它?

c - 如何忽略 '\40' 表达式并只输出单元格文本