调用函数前能否用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
相关产品推荐
相关产品推荐

