为什么在howstuffworks.com上发布的此代码不起作用?

时间:2016-03-19 00:41:50

标签: c

#include <stdio.h>

int main()

{

int a[5];

int i;

    for (i=0; i<5; i++)
        a = i;
    for (i=0; i<5; i++)
        printf("a[%d] = %d\n", i, a);
}

3 个答案:

答案 0 :(得分:1)

用作操作符操作数的数组(sizeof和一元&除外)会自动转换为指向数组第一个元素的指针。 转换后的指针不是左值,因此不能用作赋值运算符的左操作数。

此代码有效。

#include <stdio.h>

int main(void)
{
    int a[5];
    int i;

    for (i=0; i<5; i++)
        a[i] = i;
    for (i=0; i<5; i++)
        printf("a[%d] = %d\n", i, a[i]);
    return 0;
}

答案 1 :(得分:0)

您将a声明为整数数组 - 而不是访问数组a[i]的元素,而是直接访问a,而只保存第一个元素的内存地址数组。所以你基本上是直接修改内存地址,这几乎不是一个好主意。

答案 2 :(得分:-1)

y在a = i中有错误,如果a [i] = i:     int main()

{

int a[5];

int i;

for (i=0; i<5; i++)
    a[i] = i;
for (i=0; i<5; i++)
    printf("a[%d] = %d\n", i, a[i]);
}