全局修改数组/结构不起作用

时间:2016-06-17 13:23:22

标签: c arrays pointers struct global-variables

我认为我接近了解指针概念的标志,但我遇到了一个我自己无法解决的问题...... 我试图通过函数修改结构:

struct structure
{
    double lower[2];
};

void function(struct structure *structure1)
{
    structure1->lower[0] = 1;
    structure1->lower[1] = 2;
}

int main()
{
    double a[2] = {0, 0};

    struct structure structure1 = { {a[0], a[1]} };

    function(&structure1);
    printf("%f, %f\n", a[0], a[1]);

当我尝试打印a时, 值保持不变 - 它打印0, 0。 为什么数组不会全局变化?

2 个答案:

答案 0 :(得分:3)

  

值保持不变 - 它打印0, 0。为什么数组不会全局变化?

  • 您的数组a不是全局变量(它在main中是本地的)
  • 您从未真正改变a中的任何内容 - 您只是使用其元素初始化structure1
  • 您的function更改structure1 - 但它与数组a
  • 无关

答案 1 :(得分:0)

使用这个,你正在调用一个给出值0,0:

的局部变量
printf("%f, %f\n", a[0], a[1]);

试试这个

printf("%f, %f\n", structure1->lower[0], structure1->lower[1]);

全球通话。