Tag: 范围

在C中,如何将全局变量的范围限制为声明它的文件?

我是C的新手。我面前有一本书,解释了C的“文件范围”,包括示例代码。 但是代码只声明并初始化一个文件范围的变量 – 它不会通过尝试以非法方式访问它来validation变量的范围。 所以! 本着科学的精神,我构建了一个实验。 文件bar.c : static char fileScopedVariable[] = “asdf”; 文件foo.c : #include #include “bar.c” main() { printf(“%s\n”, fileScopedVariable); } 根据我的书和谷歌,对printf()的调用应该失败 – 但事实并非如此。 foo.exe输出字符串“asdf”并正常终止。 我非常想使用文件范围。 我错过了什么?

在main之后声明的变量是否可能具有文件范围?

运行此代码后: #include int x; int main(void) { printf(“%d\n”,x); return 0; } int x=5; 我预计输出应为0 。 由于程序int x;的序列控制结构 int x; 应首先执行,然后打印0 ,最后int x=5; 应该执行。 但是它给出了输出5 。 如何在printf为x访问5 ?

文件范围内的可变长度数组?

我有这个代码的例子。 #include #include #define array_size 3 typedef struct { int array[array_size]; } TEST; void printout(TEST *p, int element) { printf(“element: %i\n”, p->array[element]); } int main(void) { TEST *p; p = malloc(sizeof(TEST)); p->array[0] = 5; printout(p, 0); return 0; } 但我想根据用户输入分配”array_size” 。 如果我尝试这样做,编译器会说”variably modified ‘array_size’ at file scope” 。 所以,我是对的,做我想要的唯一方法是将所有东西都移到main()..? 它工作得很好,但是在文件范围内保留structs and functions declarations似乎很简单。

限制#define标签的范围

限制#define标签范围并避免不必要的令牌冲突的正确策略是什么? 在以下配置中: MAIN.C # include “Utility_1.h” # include “Utility_2.h” # include “Utility_3.h” VOID Main() { … } Utility_1.h # define ZERO “Zero” # define ONE “One” BOOL Utility_1(); // Uses- ZERO:”Zero” & ONE:”One” Utility_2.h # define ZERO ‘0’ # define ONE ‘1’ BOOL Utility_2(); // Uses- ZERO:’0′ & ONE:’1′ Utility_3.h const UINT ZERO = 0; […]

C变量的范围

可能重复: 从函数安全和可移植返回字符串文字地址? C语言中字符串文字的“生命周期” 您好我有点困惑 char *func() { return “Hello”; } 这里“Hello”是字符序列/数组。 它是一个局部变量,一旦函数返回它就必须消失。 那我们怎么能得到正确的价值呢?

我可以在C中释放()静态和自动变量吗?

代码如下: #include int num = 3; // Static external variable int *ptr = # int main(void) { int num2 = 4; // Automatic variable int *ptr2 = &num2; free(ptr); //Free static variable free(ptr2); //Free automatic variable return 0; } 我尝试编译上面的代码,它的工作原理,我很好奇free()函数是否能够释放静态变量和自动变量? 或者基本上什么也没做?

自动初始化局部变量

我有以下代码片段。 int j; printf(“%d”,j); 正如所料,我得到了垃圾值。 32039491 但是当我在上面的代码片段中包含一个循环时,就像 int j; print(“%d”,j); while(j); 我在该程序的多次试验中得到以下输出。 0 我一直认为局部变量默认初始化为垃圾值,但看起来变量在使用循环时会自动初始化。

如何引用局部变量在C中共享全局变量的同名?

例如 #include int foo = 100; int bar() { int foo; /* local foo = global foo, how to implemented? */ return 0; } int main() { int result = bar(); return 0; } 我认为在function栏中,直接调用foo将获得全局foo。 我怎么能引用当地的foo? 我知道在C ++中,有这个指针。 但是,C有类似的东西吗? 非常感谢!