文章
2
粉丝
0
获赞
1
访问
129
题目链接:在函数调用时,以下说法正确的是 请在下方描述您遇到的问题: 答案
要解决这道题,需逐一分析每个选项,结合函数调用的核心规则(参数作用域、返回值、数据传递方式、文件组织)判断对错:
选项 A:错误
函数分为有返回值函数(如int add(int a, int b))和无返回值函数(用void声明,如void printMsg())。无返回值函数调用后不需要带回任何返回值,仅执行特定操作(如打印、修改全局变量等)。因此 “必须带回返回值” 的说法不成立。
int add(int a, int b)
void
void printMsg()
选项 B:正确
形式参数(简称 “形参”)是函数定义时的参数(如int add(int x, int y)中的x、y),作用域仅限于函数内部(局部变量);实际参数(简称 “实参”)是函数调用时传入的参数(如add(3, 5)中的3、5,或int a=3, b=5; add(a,b)中的a、b),作用域在主调函数中。
int add(int x, int y)
x
y
add(3, 5)
3
5
int a=3, b=5; add(a,b)
a
b
由于两者的作用域相互独立,同名不会产生冲突。例如:
#include <stdio.h> // 形参为a、b(局部作用域) int add(int a, int b) { return a + b; } int main() { // 实参也为a、b(主函数作用域) int a = 1, b = 2; printf("%d", add(a, b)); // 输出3,同名无冲突 return 0; }
选项 C:错误
函数间的数据传递有 3 种常见方式:参数传递(值传递、地址传递)、返回值传递、全局变量传递。全局变量的作用域是整个程序(若未用static限制),主调函数和被调函数均可访问、修改全局变量,从而实现数据传递。例如:
static
#include <stdio.h> int g_val = 0; // 全局变量 void setVal() { g_val = 10; // 被调函数修改全局变量 } int main() { setVal(); printf("%d", g_val); // 主调函数访问修改后的全局变量,输出10 return 0; }
因此 “不可以使用全局变量” 的说法错误。
选项 D:错误
主调函数和被调函数可以分布在不同文件中(多文件编程场景)。只要在主调函数所在文件中声明被调函数的 “函数原型”,并正确链接编译,即可调用其他文件中的函数。例如:
文件 1(func.c):定义被调函数int add(int a, int b) { return a + b; }
int add(int a, int b) { return a + b; }
文件 2(main.c):主调函数(声明函数原型后调用)#include <stdio.h>int add(int a, int b); // 函数原型声明int main() { printf("%d", add(3,5)); return 0; }
#include <stdio.h>
int add(int a, int b); // 函数原型声明
int main() { printf("%d", add(3,5)); return 0; }
编译时链接两个文件(如gcc main.c func.c -o main),程序可正常运行。因此 “总是在同一个文件里” 的说法错误。
gcc main.c func.c -o main
正确答案:B
登录后发布评论
要解决这道题,需逐一分析每个选项,结合函数调用的核心规则(参数作用域、返回值、数据传递方式、文件组织)判断对错:
选项 A:错误
函数分为有返回值函数(如
int add(int a, int b))和无返回值函数(用void声明,如void printMsg())。无返回值函数调用后不需要带回任何返回值,仅执行特定操作(如打印、修改全局变量等)。因此 “必须带回返回值” 的说法不成立。选项 B:正确
形式参数(简称 “形参”)是函数定义时的参数(如
int add(int x, int y)中的x、y),作用域仅限于函数内部(局部变量);实际参数(简称 “实参”)是函数调用时传入的参数(如add(3, 5)中的3、5,或int a=3, b=5; add(a,b)中的a、b),作用域在主调函数中。由于两者的作用域相互独立,同名不会产生冲突。例如:
选项 C:错误
函数间的数据传递有 3 种常见方式:参数传递(值传递、地址传递)、返回值传递、全局变量传递。全局变量的作用域是整个程序(若未用
static限制),主调函数和被调函数均可访问、修改全局变量,从而实现数据传递。例如:因此 “不可以使用全局变量” 的说法错误。
选项 D:错误
主调函数和被调函数可以分布在不同文件中(多文件编程场景)。只要在主调函数所在文件中声明被调函数的 “函数原型”,并正确链接编译,即可调用其他文件中的函数。例如:
文件 1(func.c):定义被调函数
int add(int a, int b) { return a + b; }文件 2(main.c):主调函数(声明函数原型后调用)
#include <stdio.h>int add(int a, int b); // 函数原型声明int main() { printf("%d", add(3,5)); return 0; }编译时链接两个文件(如
gcc main.c func.c -o main),程序可正常运行。因此 “总是在同一个文件里” 的说法错误。正确答案:B