使用数组的函数的基本初始化

时间:2019-10-20 23:39:26

标签: c

当前正在设置一个函数,以声明一个由4个部分组成的7段显示器的情况(基本上是一个数字闹钟),但是在尝试确认正确设置时会不断出错(尤其是从核心开放行开始) 尝试过环顾四周,但是没有什么比我需要的阵列具体。

只需对代码进行注释。我之前没有正确设置代码块,因此不确定如何突出显示语法。如果设置正确,请忽略此消息 最初将其设置为int SegmentWrite(int ... []),但不会产生结果。 我尝试过的其他测试包括在花括号前包含一个大小[10] [7],以声明计数和大小,将类型从字节更改为int,char和float(尽管只有字节会产生任何形式的结果,而不是我想要)

void SegmentWrite (int SegmentDigits[]){
  byte SegmentDigits = zero[7] {1,1,1,1,1,1,0};//0
                  one[7] = {0,1,1,0,0,0,0};//1
                  two[7] = {1,1,0,1,1,0,1};//2
                  three[7] = {1,1,1,1,0,0,1};//3
                  four[7] = {0,1,1,0,0,1,1};//4
                  five[7] = {1,0,1,1,0,1,1};//5
                  six[7] = {1,0,1,1,1,1,1};//6
                  seven[7] = {1,1,1,0,0,0,0};//7
                  eight[7] = {1,1,1,1,1,1,1};//8
                  nine[7] = {1,1,1,1,0,1,1}; //9

这个特定的代码段不应该做任何事情-至少不是一个人做。验证时,为确认格式正确,我只得到了错误报告“声明'byte SegmentDigits'阴影了一个参数”,并突出显示了第一行。 -仅需注意,发现了另一个错误,特别是在开始行-“将'SegmentWrite'声明为void数组”或“''SegmentWrite'声明为函数返回数组”

1 个答案:

答案 0 :(得分:1)

您需要为函数中的参数数组和本地数组使用其他名称。

此外,该函数还应采用另一个参数,即您要显示的数字。

然后应该声明一个二维数组,然后可以将数字用作索引。

void SegmentWrite (int SegmentDigits[7], int digit){
    int allSegmentDigits[][7] = {
        {1,1,1,1,1,1,0},//0
        {0,1,1,0,0,0,0},//1
        {1,1,0,1,1,0,1},//2
        {1,1,1,1,0,0,1},//3
        {0,1,1,0,0,1,1},//4
        {1,0,1,1,0,1,1},//5
        {1,0,1,1,1,1,1},//6
        {1,1,1,0,0,0,0},//7
        {1,1,1,1,1,1,1},//8
        {1,1,1,1,0,1,1}} //9
    memcpy(SegmentDigits, allSegmentDigits[digit], sizeof allSegmentDigits[0]);
}
相关问题