You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在函数内声明全局变量并确保其值可在其他函数中使用?

问题分析与解决

你的代码问题出在从未调用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 12:40:30