C 检查 2D-Int 数组何时已满

标签 c arrays microcontroller

我想在二维数组满时检查它。 但它不起作用,因为我不确定如何知道哪个是完整的 value_array[x][当它已满时]。

我可以做 static Short array_status1 =0;静态短 array_status2 =0; 静态短 array_status3 =0;静态短 array_status4 =0;并在我使用 dms = 1,2,3,4 之一时增加它。但还有其他方法吗?

由于 if(array_status > array_length) ,我的程序无法正常工作。如果我的函数不仅被调用为一个 dms,它会写入值 10 次,例如 5 个值 dms =1 和 5 个值 dms=2

我在微 Controller 中用 C 语言编程。

#define array_length 10

static int value_array[4][array_length];

static short array_status =0;


int average_value(int value,short dms)
{
    int average,i =0;

    if(array_status > array_length)
    { 
        //average_value
    array_status=0;  
        for(i =0 ; i < array_length ; i++)
     {
        average += value_array[dms][i];
     }
     average = average / array_length;  
  }
    else 
        average =0;

    value_array[dms][array_status] = value;
    array_status++;

    return average;
}

最佳答案

您可以将索引存储在数组中。

#define array_length 10
#define array_dim    4

static int value_array[array_dim][array_length];

static short array_status[array_dim] = {0};

int average_value(int value, short dms)
{
    int average, i = 0;

    if(array_status[dms] > array_length)
    {
        //average_value
        array_status[dms] = 0;  
        for(i = 0 ; i < array_length ; i++)
        {
            average += value_array[dms][i];
        }
        average = average / array_length;  
    }
    else 
        average = 0;

    value_array[dms][array_status[dms]] = value;
    array_status[dms]++;

    return average;
}

关于C 检查 2D-Int 数组何时已满,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20100796/

相关文章:

arrays - 如何在编译时初始化一个由先前定义的数组组成的数组?

c - 启用端口 RA0 作为输入并从 led 检索值 LDR

c - 在没有内置函数的情况下舍入 C 中的 Float 值

arrays - Powershell:如何动态更新嵌套的 JSON 数组?

c# - 如何将 "concatenate"或 "combine"或 "join"序列化为一系列 'binarily' 字节数组?

arduino - 使用MPU6050加速度计/陀螺仪模块

c - C 是否隐式且奇怪地将数组中的这个 char 转换为 int?

c - 格式说明符 Q 和 Mario 金字塔算法解决方案中的独特错误

c++ - 是否有任何任务栏API可以立即应用注册表更改?

c - 如何将 char 数组传递给 fopen_s