如何在函数内声明全局变量并确保其值可在其他函数中使用?
问题分析与解决
你的代码问题出在从未调用function函数,导致全局变量global_variable始终保持默认初始值0,最终计算结果自然是0。另外代码还有几个不符合C标准的细节,一起修正如下:
核心问题说明
你已经在所有函数外部正确声明了全局变量global_variable,函数内的操作是给它赋值,不是声明——全局变量无法在函数内部声明,必须定义在所有函数外部才能拥有全局作用域。
修正后的代码
#include <stdio.h> // 必须包含printf所需的头文件 int global_variable; // 全局变量的正确声明位置 void function(int x, int y) { x = 58; y = 71; global_variable = x + y; // 给全局变量赋值,而非声明 } int main() { // 符合C标准的main函数参数格式 function(0, 0); // 调用function,触发全局变量赋值 int z = global_variable + 75; printf("result: %d \n", z); return 0; // main函数需要返回整数类型值 }
关键修复点
- 调用
function函数:只有执行这个函数,global_variable才会被赋值为58+71=129,后续加75才能得到期望的204。 - 补充头文件:
printf属于标准库函数,必须包含<stdio.h>才能正常编译运行。 - 修正
main参数:标准C中main的合法参数为int main()或int main(int argc, char *argv[]),原代码的int z不符合规范,会引发未定义行为。
全局变量的作用域是整个程序,只要完成赋值操作,其他函数就能直接读取它的正确值——你的问题本质是缺少赋值操作的触发步骤,而非全局变量的作用域问题。
内容的提问来源于stack exchange,提问作者user20530471
相关产品推荐
相关产品推荐

