C语言函数封装及变量的作用域
函数封装
函数封装是指将一段代码打包成函数作为一个单元,使得代码可重用并能提高代码的可读性。在C语言中,可以使用函数的方式实现对代码的封装。
函数的定义与调用
函数的定义分为两步:函数声明和函数实现。
函数声明通常放在头文件中,用于告诉编译器函数的存在,并告知该函数的参数及返回值类型;函数实现则放在源文件中,实现函数的具体功能。
函数的调用需要在主函数中使用函数名及参数列表进行调用。
例如:
// 函数声明
int add(int a, int b);
// 函数实现
int add(int a, int b) {
return a + b;
}
// 主函数调用
int main() {
int result = add(1, 2);
return 0;
}
函数的参数类型
函数的参数类型分为两种:值传递和指针传递。
值传递即将实参的值传递给形参,在函数内部进行操作,但不会影响实参的值。指针传递则是将实参的地址传递给形参,可在函数内部对实参进行修改。
例如:
// 值传递
int add(int a, int b) {
a = a + 1;
return a + b;
}
// 指针传递
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
静态变量
静态变量是指在函数内部声明的变量,但其作用域不限于函数内部。静态变量的生命周期与整个程序的运行时间有关,该变量只会被初始化一次,并保留在内存中。
例如:
void foo() {
static int count = 0;
count++;
printf("count: %d\n", count);
}
int main() {
foo(); // count: 1
foo(); // count: 2
return 0;
}
示例说明
示例1:计算平均数
编写一个函数,用于计算一组数字的平均数。
#include <stdio.h>
double calculate_average(int *array, int length) {
int sum = 0;
for (int i = 0; i < length; i++) {
sum += array[i];
}
return (double) sum / length;
}
int main() {
int array[] = {1, 2, 3, 4, 5};
int length = sizeof(array) / sizeof(array[0]);
double result = calculate_average(array, length);
printf("The average of array is %.2f\n", result);
return 0;
}
示例2:判断素数
编写一个函数,判断一个正整数是否为素数。
#include <stdio.h>
#include <stdbool.h>
bool is_prime(int num) {
if (num <= 1) { // 小于1的数字不是质数
return false;
}
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
int main() {
int num;
printf("Please input a positive integer: ");
scanf("%d", &num);
if (is_prime(num)) {
printf("%d is a prime number.\n", num);
} else {
printf("%d is not a prime number.\n", num);
}
return 0;
}
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言函数封装及变量的作用域 - Python技术站