Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 静态变量';s地址是否可以被其他文件访问_C_Pointers_Static - Fatal编程技术网

C 静态变量';s地址是否可以被其他文件访问

C 静态变量';s地址是否可以被其他文件访问,c,pointers,static,C,Pointers,Static,我有一个关于C语言中静态变量的问题。 例如,有两个文件,一个是“Action.c”,另一个是“Result.c” [在Action.c文件中] ` [在Result.c中] void main (void) { uint8_t* getResultPtr = NULL; getActionResult(&getResultPtr); } 我想知道这是否是从“Action.c”文件中获取值的合法方法。并且还想知道将静态变量地址传输到其他文件是不是坏主意 非常感谢。这合法吗

我有一个关于C语言中静态变量的问题。 例如,有两个文件,一个是“Action.c”,另一个是“Result.c”

[在Action.c文件中] `

[在Result.c中]

void main (void)
{
    uint8_t* getResultPtr = NULL;
    getActionResult(&getResultPtr);
}
我想知道这是否是从“Action.c”文件中获取值的合法方法。并且还想知道将静态变量地址传输到其他文件是不是坏主意


非常感谢。这合法吗?对从翻译单元外部看不到文件级静态变量,但如果翻译单元以某种方式发布了地址(如您所做的),则可以通过取消引用该地址来访问或更改该地址

这是个好主意吗?不是真的。文件级静态的全部目的是保护它们不受翻译单元之外的事物的影响。如果你允许这样做,那么把它标记为静态是毫无意义的


只需将其定义为
uint8\u t actionResult[10]={0x00}
和have
main
使用变量名,而不是获取和取消引用其地址。

是的,这是合法的。静态变量仅在定义它的编译单元(也称为源文件)中可见。但是如果一个函数提供了它的地址,那就可以了,因为静态变量一直存在到程序终止。这样的事情不一定是个好主意,但它是一种选择,尽管有其他选择。顺便说一下,
main()
在标准C中返回
int
,而不是
void
void main (void)
{
    uint8_t* getResultPtr = NULL;
    getActionResult(&getResultPtr);
}