访问数据的最佳做法

时间:2014-02-21 09:01:24

标签: c arrays extern

我在源文件1中有一个函数: 源文件1:

 function in Source file 1.
    Code:
        char day[7];
    f1:
         {  
           ....
           ....
           ....
        after some work fill the
           day[0]= random number;
           .
           .
           .
           .
           day[6]=random number;     


           }     

Quote:
Source file 2:

f2:

{
extern dayval[];

//do stuff

}

现在我想从源文件2中的数组中访问那些[7]值。

如果我在执行源文件中的f1之后立即在源文件2中声明数组为extern,则值保持不变或者为零

原谅我的愚蠢我刚刚开始学习C语言而且它已经是一个很好的骑车笑。 我希望你们能用你的建议来启发我

这是访问数据的最佳方式。我正在研究嵌入式系统,有些人认为通过引用传递是一个不错的选择。我很高兴收到您的意见。

此致

1 个答案:

答案 0 :(得分:1)

是的,它可以通过将其声明为extern变量来解决,但它也需要在source1.c中是全局的。无法从范围外部访问局部变量,至少不能通过名称访问。

所以,在source1.c中:

char day[7];

void function1(void)
{
  day[0] = ...;
  /* and so on */
}

然后在source2.c中:

extern char day[7];

void function2(void)
{
  printf("oh, source1 has set day[0] to %c\n", day[0]);
}

当然,您必须确保source1.c中的function1()function2()之前从source2.c运行,以便初始化该数组。

你可以有一个单独的main.c:

int main(void)
{
  function1();
  function2();
  return 0;
}

然后使用类似的东西(假设在Unix类型的环境中使用gcc)将它们一起编译:

$ gcc -o myprogram main.c source1.c source2.c