这三个代码中的一个不起作用

时间:2015-11-18 21:14:22

标签: c

我试图找出这个程序中的错误(C代码)。但我不清楚任何事情。我很感激一些帮助。我收到此错误main.c:10:11: error: lvalue required as increment operand

#include <stdio.h>
#define MAXIMUM 100

main()
{   int j;
    float P[MAXIMUM];

    for (j = 0; j < MAXIMUM; j++) {
         *P = 0.0;
         P++;
    }
}

3 个答案:

答案 0 :(得分:2)

数组类型和指针类型不相同,即使它们在许多情况下的工作方式类似。您无法更改数组指向的位置。你不能像指针那样递增或递减它。

使用:

for (j = 0; j < MAXIMUM; j++) {
     P[j] = 0.0;
}

如果要使用指针,可以创建指向数组的指针,然后递增它。

float* ptr = P;
for (j = 0; j < MAXIMUM; j++) {
     *ptr = 0.0;
     ptr++;
}

答案 1 :(得分:0)

如果你想在for循环中使用指针(就像你现在一样),你应该声明如下:

float P_array[MAXIMUM];
float *P = P_array;

答案 2 :(得分:0)

首先要突出显示......

不要使用......

main()

使用

int main(void)

第二......你创建了一个数组,而不是一个* P

的指针

改为

#include <stdio.h>
#define MAXIMUM 100

int main(void)
{   int j;
    float P[MAXIMUM]; // Create array

    for (j = 0; j < MAXIMUM; j++) //First loop, j = 0. Second loop, j = 1
    {
         P[j] = 0.0;
    }
    return 0;
}

如果你想打印结果

#include <stdio.h>
#define MAXIMUM 100

int main(void)
{   int j;
    float P[MAXIMUM]; // Create array

    for (j = 0; j < MAXIMUM; j++) //First loop, j = 0. Second loop, j = 1
    {
         P[j] = 0.0;
         printf("%d: %d", j, P[j]);
    }
    return 0;
}