【发布时间】:2012-06-04 19:35:37
【问题描述】:
这里的软件经验很少的新 EE。 在过去的几年里,在这个网站上阅读了很多问题,这将是我的第一个问题/帖子。 还没有完全找到这个问题的答案。
我想知道让函数修改主体内的全局变量(不将其作为参数传递)与传递变量地址之间的区别/动机。
以下是每个示例以使其更清楚。 假设我声明了一些函数“peripheral.c”(它们的原型在“peripheral.h”中,并在“implementation.c”中使用它们
方法一:
//peripheral.c
//macros, includes, etc
void function(*x){
//modify x
}
.
//implementation.c
#include "peripheral.h"
static uint8 var;
function(&var); //this will end up modifying var
方法二:
//peripheral.c
//macros, includes, etc
void function(void){
//modify x
}
.
//implementation.c
#include "peripheral.h"
static uint8 x;
function(); //this will modify x
是避免使用“全局”变量的唯一动机吗? (另外,如果它只有文件范围,它真的是全局的吗?)
希望这个问题是有道理的。 谢谢
【问题讨论】:
-
哇......这些答案很快就来了。他们都非常有帮助。谢谢!
标签: c function variables pointers global