Tag: 范围

有什么方法来模块化C代码?

您知道在项目规模扩大时模块化C代码有哪些方法,实践和约定?

文件范围和全局范围:C&C ++

我是学生,我对C和C ++中的全局和文件范围变量感到困惑。 这两种观点有什么不同吗? 如果是,请详细说明。

“文件范围”和“程序范围”之间有什么区别

全局声明的变量据说具有程序范围 使用static关键字全局声明的变量据说具有文件范围。 例如: int x = 0; // **program scope** static int y = 0; // **file scope** static float z = 0.0; // **file scope** int main() { int i; /* block scope */ /* . . . */ return 0; } 这两者有什么区别?

花括号和范围如何在C中起作用?

我正忙着在业余时间学习一些C. 我有一些Java经验,因此我习惯用大括号来限制ie变量的范围。 但我有点困惑,因为看起来好像Brian W. Kernighan / Dennis M. Ritchie的书“The C Programming Language”并没有使用很多花括号,我认为使用它们是正常的(来自Java的角度)。 即代码为的书中的1.6: while((c = getchar())) != EOF) if (c >= ‘0’ && c <= '9') ++ndigit[c-'0']; else if() /*and so forth…*/ ++nwhite; else ++nother; 从Java的角度来看,我习惯于只运行第一个语句,因为缺少大括号,但缩进表明一切都会运行(if,else if else) 所以我要问的是:这里会运行什么,为什么会运行? if,else if和else都在while循环的范围内吗? 是否要引用任何约定,我可以阅读以试图更好地理解它? 提前致谢。

返回局部变量行为的地址

可能重复: 可以在其范围之外访问局部变量的内存吗? 输入: #include #include int func2(void); int* func1(void); int func2(void) { int* b; b = func1(); printf(“%d”, *b); printf(“%d”, *b); printf(“%d”, *b); } int* func1() { int a = 13; return &a; } int main() { func2(); } 输出: 13 -1077824828 -1077824828 有人可以解释堆栈和操作系统中发生的事情吗? 获取指针值后,为什么结果从13变为垃圾?

从C中的函数返回数组

由于某种原因,我的函数只返回我的数组中的第一个元素,我无法弄清楚为什么数组的其余部分超出范围。 该函数接受两个整数数组,添加它们各自的元素,并将总和放入返回的第三个数组中。 这是我的代码: #include /* count digits, white space, others */ int *sumarrays(int arr1[], size_t arr1len, int arr2[], size_t arr2len); void main() { int arr1[10]; size_t arr1len = 10; int arr2[10] = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 }; size_t arr2len = 10; int i; int *x; arr1[0] = 2; […]

为什么不在循环外部和内部声明具有相同名称的变量会产生错误?

{ int i; for(i=0;i<5;i++) { int i=10; printf("%d",i); } } 我有两个问题 为什么我没有重新申报错误? 为什么输出将是10 5次而不是10 1次?

结构成员标识符放在什么范围内?

C规范说 范围有四种:函数,文件,块和函数原型。 现在,如果我在任何function之外执行以下操作 struct A { int x; }; 我的理解是标识符x在文件范围内可见。 我们使用命名空间语法来访问该成员,正如规范所述 每个结构或联合为其成员都有一个单独的名称空间(通过。或 – >运算符用于访问该成员的表达式的类型消除歧义) 让我们通过添加一个函数来使它更清晰 struct A { int x; }; void f(void) { int i; } 然后参与此程序表示的标识符,范围和名称空间(N / A“不适用”): file scope ========================================== Ordinary | Members A | Tags | Labels —————————————— f | x | A | N/A | | | function scope of […]

C中函数的局部变量范围

当我开始用C语言编程时,我听说过以下场景。 “ 尝试从外部访问,函数局部变量将导致错误(或垃圾值)。因为当我们从函数返回时堆栈被清除 ” 但我的下面的代码示例打印值为50.我正在使用最新的GCC编译器编译代码。 #include int * left(); int main() { int *p=left(); printf(“%d\n”,*p); return 0; } int * left() { int i=50; return &i; } 在这个问题上欢迎我。 我能知道C ++中的行为吗? 它类似于c ..

为什么我不能将值赋给C中函数外的全局变量?

假设我有一个全局变量,我想为它分配另一个变量。 我发现你可以为函数内的全局变量赋值: int i = 8; int main(void) { i = 9; /* Modifies i */ return 0; } 但是,在函数外部分配全局变量不起作用! int i = 8; i = 9; /* Compiler error */ int main(void) { return 0; } 我收到以下错误消息: warning: data definition has no type or storage class warning: type defaults to ‘int’ in declaration of […]