C函数
函数是C编程的核心,用于完成一系列子任务的程序解决方案。
至此,你已经知道每个C程序都包含一个main()函数。并且您熟悉printf()函数。
你也可以创建自己的函数。
函数的特点:
•是执行特定任务的代码块
•可重用
•使程序易于测试
•可以在不更改调用程序的情况下进行修改
将main()分解为子任务,即使是简单的程序也更易于理解用功能实现的
例如:
#include <stdio.h>
// 定义函数 square,用于计算一个数字的平方
int square(int num) {
return num * num;
}
int main() {
int x, result;
x = 5;
result = square(x); // 调用函数 square 计算 x 的平方
printf("%d 的平方是 %d\n", x, result);
return 0;
}
这段代码主要实现了以下功能:
-
引入头文件
stdio.h
,其中包含了输入输出函数的定义。 -
定义了函数
square
,用于计算一个数字的平方。 -
在
main
函数中声明了变量x
和result
。 -
将
x
赋值为 5。 -
调用函数
square
,传入参数x
,并将返回值赋给变量result
。 -
使用
printf
函数打印出结果,显示x
的平方。 -
返回 0,表示程序成功执行并退出。
为了使用 square函数,我们需要对其进行声明。
函数的声明
函数的声明
声明通常出现在main()函数上方,并采用以下形式:
返回类型 函数名(参数);
当不需要函数返回值,可以将函数返回类型设置成 void 关键字。
例如,display_message该函数没有返回值:
void display_message();
【单选题】C程序必须至少具有一个名为main()的函数?
是
否
C函数
当声明中包含参数类型和名称时,该声明称为函数原型。
例如,square 函数原型出现在main()上方:
#include <stdio.h>
/* 声明*/
int square (int num);
int main() {
int x, result;
x = 5;
result = square(x);
printf("%d squared is %d\n", x, result);
return 0;
}
这里square函数返回一个整数,并接受一个int类型的参数。
最后一步实际上是定义功能。
函数定义通常出现在main()函数之后。
#include <stdio.h>
/* 声明 */
int square (int num);
int main() {
int x, result;
x = 5;
result = square(x);
printf("%d squared is %d\n", x, result);
return 0;
}
/* 定义*/
int square (int num) {
int y;
y = num * num;
return(y);
}
如您所见,square函数计算并返回其参数的平方。
一个函数可以采用多个参数-在这种情况下,它们必须用逗号分隔。
return语句用于将值发送给调用的语句。
【选词填空】声明一个名为“ triple”的函数,该函数带有一个int参数并返回其值乘以3:
int triple ( num) {
int y;
y = num * 3;
y;
}
echo
return
int
let
函数参数
在调用函数时, 大多数情况下,主调函数和被调函数之间有数据传递关系,这就是有参数的函数形式。函数参数的作用是传递数据给函数使用,函数利用接收的数据进行具体的操作处理。
默认情况下,参数按值传递,这意味着将数据副本提供给被调用函数的参数。
实际变量未传递到函数中,因此函数内修改参数的值不会更改到外部对应变量的值。
传递给函数的参数按位置与参数匹配。
因此,第一个参数传递给第一个参数,第二个参数传递给第二个参数,依此类推。
例如:
#include <stdio.h>
// 声明函数 sum_up,用于计算两个整数的和
int sum_up(int x, int y);
int main() {
int x, y, result;
x = 3;
y = 12;
result = sum_up(x, y); // 调用函数 sum_up 计算 x 和 y 的和
printf("%d + %d = %d", x, y, result); // 打印计算结果
return 0;
}
// 定义函数 sum_up,将两个整数相加并返回结果
int sum_up(int x, int y) {
x += y; // 将 x 增加 y 的值
return x; // 返回计算结果
}
这段代码实现了以下功能:
-
引入头文件
stdio.h
,其中包含了输入输出函数的定义。 -
声明了函数
sum_up
,用于计算两个整数的和。 -
在
main
函数中声明了变量x
、y
和result
。 -
将
x
赋值为 3,将y
赋值为 12。 -
调用函数
sum_up
,传入参数x
和y
,并将返回值赋给变量result
。 -
使用
printf
函数打印出结果,显示x + y = result
的形式。 -
返回 0,表示程序成功执行并退出。
函数 sum_up
的功能是将两个整数相加并返回结果。在函数体内,参数 x
的值增加了参数 y
的值,然后将结果返回。
程序输出为:3 + 12 = 15
x和y的值传递给sum_up。
注意,即使在sum_up中更改了参数x的值,也不会更改main()中参数x的值,因为仅将其值(副本)传递到了参数x中。
函数声明中的参数是形式参数。
【选词填空】声明带有两个float参数的函数test():
void test( a float b);
,
int
;
float
变量作用域
变量作用所谓作用域(Scope),就是变量的有效范围,就是变量可以在哪个范围以内使用。有些变量可以在所有代码文件中使用,有些变量只能在当前的文件中使用,有些变量只能在函数内部使用,有些变量只能在 for 循环内部使用。
变量的作用域由变量的定义位置决定,在不同位置定义的变量,它的作用域是不一样的。
在函数内声明的变量是该代码块的局部变量,不能在函数外部引用。
在所有函数外部声明的变量是整个程序的全局变量。
例如,在程序顶部用#define声明的常量对整个程序可见。
以下程序同时使用局部变量和全局变量:
#include <stdio.h>
int global1 = 0; // 声明并初始化全局变量 global1
int main() {
int local1, local2; // 声明局部变量 local1 和 local2
local1 = 5; // 将 local1 赋值为 5
local2 = 10; // 将 local2 赋值为 10
global1 = local1 + local2; // 计算 local1 和 local2 的和,并将结果赋给 global1
printf("%d \n", global1); // 打印 global1 的值,即 15
return 0; // 返回 0,表示程序成功执行并退出
}
这段代码实现了以下功能:
-
引入头文件
stdio.h
,其中包含了输入输出函数的定义。 -
声明并初始化全局变量
global1
,初始值为 0。 -
在
main
函数中声明了局部变量local1
和local2
。 -
将
local1
赋值为 5。 -
将
local2
赋值为 10。 -
将
local1
和local2
的和赋值给全局变量global1
。 -
使用
printf
函数打印出全局变量global1
的值,即 15。 -
返回 0,表示程序成功执行并退出。
当参数传递给函数参数时,参数充当局部变量。退出函数后,函数中的参数和任何局部变量都会被销毁。
请谨慎使用全局变量。在使用它们之前,应先对其进行初始化,以避免意外结果。
而且由于可以在程序中的任何地方更改它们,因此全局变量可能导致难以检测到错误(bug)。
【单选题】变量作用域指的是?
声明的函数数量。
程序中变量的有效范围。
程序中的变量数。
静态变量
静态变量具有局部作用域,但在退出函数时不会被破坏。因此,静态变量将在程序生命周期内保留其值,并且每次重新输入该函数时都可以访问该静态变量。
声明时会初始化静态变量,并且需要用前缀static修饰。
以下程序使用静态变量:
#include <stdio.h>
// 声明函数 say_hello,用于打印问候语
void say_hello();
int main() {
int i;
for (i = 0; i < 5; i++) {
say_hello(); // 调用函数 say_hello
}
return 0;
}
// 定义函数 say_hello,用于打印问候语
void say_hello() {
static int num_calls = 1; // 声明并初始化静态局部变量 num_calls
printf("Hello number %d\n", num_calls); // 打印问候语及调用次数
num_calls++; // 更新调用次数
}
这段代码实现了以下功能:
-
引入头文件
stdio.h
,其中包含了输入输出函数的定义。 -
声明函数
say_hello
,用于打印问候语。 -
在
main
函数中声明变量i
,用于循环控制。 -
使用
for
循环,循环执行 5 次。 -
在循环内部,调用函数
say_hello
。 -
定义函数
say_hello
,用于打印问候语。 -
声明并初始化静态局部变量
num_calls
,初始值为 1。 -
使用
printf
函数打印问候语,并显示调用次数。 -
更新静态局部变量
num_calls
的值,增加调用次数。 -
循环结束后,返回 0,表示程序成功执行并退出。
函数 say_hello
打印一条问候语,并显示该函数被调用的次数。静态局部变量 num_calls
用于记录函数的调用次数,在每次调用函数时递增。
结果为:
Hello number 1
Hello number 2
Hello number 3
Hello number 4
Hello number 5
【选词填空】声明静态整数变量并将其初始化为值1:
int var 1;
<<
=
static
statics