C错误“下标值既不是数组也不是指针”

时间:2014-04-05 22:23:54

标签: c arrays

我在下面的代码段中遇到了一些问题。

#include "stm32f0xx_tim.h"
#include "stm32f0xx_adc.h"
#include "stm32f0xx_rcc.h"
#include "stm32f0xx_conf.h"
#include "adc.h"

void calcSensor(float voltage1, float voltage2, int X, int Y)
{
    float Iload = 0;
    float Vsensor = 0;
    float Rsensor = 0;
    float Vdrop = voltage1 - voltage2;
    uint32_t resistance = 0;
    Iload = Vdrop/Rload;
    Vsensor = Vin - Iload*Rmux - Iload*Rdemux-Vdrop;
    resistance = Vsensor/Iload;
    Rsensor[1][5] = resistance;
    Y++;
    if (Y == 22)
    {
        Y = 0;
        X++;
        if (X == 44)
        {
            X = 0;
        }

    }
}
void initRArray(void)
{
    int x;
    int y;
    for(x = 0; x < 44; x++) 
    { 
        for(y = 0; y < 22; y++)
        {
            Rsensor[x][y] = 0;
        }   
    }
}

错误出现了:

Rsensor[1][5] = resistance;

错误与标题相同:

下标值既不是数组也不是指针

我最初有X和Y作为标记,但已经切换到0和5认为它可能是一个问题。这没有解决它。另外,我有intRarray函数,它将所有值都设置为0.这个数组编译得很好,它使用的是同一个有问题的数组。

以下是头文件中数组的声明。

unsigned long int Rsensor[44][22];

2 个答案:

答案 0 :(得分:4)

您有一个局部变量float Rsensor = 0;,它会影响全局数组。重命名其中一个。

答案 1 :(得分:0)

您在程序中有以下声明

float Rsensor = 0;

这会使Rsensor成为float变量,而不是数组。