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

调用函数前能否用scanf()?代码报num1、num2未声明求解

问题分析与修复方案

错误原因拆解

  • 变量未声明:multiply函数里的num1和num2是函数的形参,作用域仅限于multiply函数内部,main函数无法直接使用这两个变量,必须在main里单独声明。
  • scanf使用错误:scanf需要接收变量的内存地址(通过&符号获取),直接传入变量名会导致内存访问错误。

修正后的代码

#include <stdio.h>

int multiply(int num1, int num2) {
    int product = num1 * num2;
    return product;
}

int main() {
    // 先在main函数内声明变量
    int num1, num2;
    // 传入变量地址给scanf
    scanf("%d %d", &num1, &num2);
    int result = multiply(num1, num2);
    printf("%d x %d = %d", num1, num2, result);

    return 0;
}

补充说明

  • 形参是函数调用时用来接收外部传入值的临时变量,和主函数里的变量是独立的,哪怕名字一样也互不影响。
  • 运行修正后的代码时,直接在终端输入两个整数(用空格分隔),就能得到乘积结果。

内容的提问来源于stack exchange,提问作者Yuris

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 21:40:57