当前位置: 首页> 教育> 幼教 > 网页美工设计之中使用的主要软件是_桂林相亲网_成都百度推广公司联系电话_批量查询权重

网页美工设计之中使用的主要软件是_桂林相亲网_成都百度推广公司联系电话_批量查询权重

时间:2025/8/27 10:30:24来源:https://blog.csdn.net/m0_72516377/article/details/146081688 浏览次数:1次
网页美工设计之中使用的主要软件是_桂林相亲网_成都百度推广公司联系电话_批量查询权重

目录

  • 函数的定义
    • 函数定义的语法
    • 代码示例
  • 函数的声明
    • 函数声明的语法
    • 代码示例
  • 函数的调用
    • 函数调用的语法
    • 代码示例
  • 函数的参数
    • 形式参数
    • 实际参数
    • 参数传递方式
      • 值传递
      • 地址传递
  • 函数的返回值
    • 返回值类型
    • 返回值的使用
  • 递归函数
    • 递归函数的组成
    • 示例:计算阶乘
  • 函数的作用域
    • 全局函数
    • 静态函数
  • 内联函数
    • 内联函数的定义
  • 函数指针
    • 函数指针的定义
    • 代码示例
  • 可变参数函数
    • 示例:计算多个整数的和
  • 补充内容
    • C 语言不支持默认参数
    • 数组作为函数参数
    • main 函数的命令行参数
    • 函数原型与头文件
    • 函数指针的应用(回调函数)
    • 可变参数的注意事项
    • 递归与迭代的选择
    • 内联函数的注意事项
    • 函数的副作用
    • 函数的链接属性
    • 总结

函数的定义

函数是完成特定任务的独立代码块,有助于代码的模块化和复用。

函数定义的语法

返回值类型 函数名(参数列表) {函数体;return 返回值; // 如果返回值类型为 void,则不需要 return 语句,或者使用 return;
}
  • 返回值类型:指定函数返回的数据类型,如 int、float、char 等。如果函数不返回任何值,使用 void 类型。
  • 函数名:是函数的标识符,遵循标识符命名规则。
  • 参数列表:是函数接收的输入参数,多个参数用逗号分隔。每个参数由数据类型和参数名组成。如果函数不接收参数,可以使用 void 或空括号。
  • 函数体:包含实现函数功能的代码。
  • return 语句:用于返回函数的结果。如果返回值类型为 void,可以省略 return 语句,或者使用 return; 来提前结束函数。

代码示例

// 定义一个函数,用于计算两个整数的和
int add(int a, int b) {int result = a + b;return result;
}

函数的声明

函数声明用于告诉编译器函数的名称、返回值类型和参数列表,以便在调用函数之前进行类型检查。

函数声明的语法

返回值类型 函数名(参数列表);

代码示例

// 函数声明
int add(int a, int b);int main() {int sum = add(3, 5);return 0;
}// 函数定义
int add(int a, int b) {return a + b;
}

函数的调用

调用函数就是执行函数体中的代码,并可以传递参数和接收返回值。

函数调用的语法

函数名(参数列表);

代码示例

#include <stdio.h>// 函数定义
int add(int a, int b) {return a + b;
}int main() {int num1 = 3, num2 = 5;// 函数调用int sum = add(num1, num2);printf("The sum is: %d\n", sum);return 0;
}

函数的参数

函数的参数分为形式参数和实际参数。

形式参数

形式参数是函数定义中声明的参数,用于接收调用函数时传递的值。

// 形式参数 a 和 b
int add(int a, int b) {return a + b;
}

实际参数

实际参数是函数调用时传递给函数的值。

int main() {int num1 = 3, num2 = 5;// 实际参数 num1 和 num2int sum = add(num1, num2);return 0;
}

参数传递方式

值传递

将实际参数的值复制给形式参数,函数内部对形式参数的修改不会影响实际参数。

#include <stdio.h>void swap(int a, int b) {int temp = a;a = b;b = temp;
}int main() {int x = 3, y = 5;swap(x, y);printf("x = %d, y = %d\n", x, y); // 输出 x = 3, y = 5return 0;
}

地址传递

将实际参数的地址传递给形式参数,函数内部可以通过指针修改实际参数的值。

#include <stdio.h>void swap(int *a, int *b) {int temp = *a;*a = *b;*b = temp;
}int main() {int x = 3, y = 5;swap(&x, &y);printf("x = %d, y = %d\n", x, y); // 输出 x = 5, y = 3return 0;
}

函数的返回值

函数的返回值是函数执行完毕后返回给调用者的值。

返回值类型

返回值类型必须与函数定义中指定的返回值类型一致。

返回值的使用

#include <stdio.h>int add(int a, int b) {return a + b;
}int main() {int result = add(3, 5);printf("The result is: %d\n", result);return 0;
}

递归函数

递归函数是指在函数体中调用自身的函数。

递归函数的组成

递归终止条件:用于终止递归调用,避免无限递归。
递归调用:在函数体中调用自身。

示例:计算阶乘

#include <stdio.h>// 递归函数计算阶乘
int factorial(int n) {if (n == 0 || n == 1) {return 1; // 递归终止条件} else {return n * factorial(n - 1); // 递归调用}
}int main() {int num = 5;int result = factorial(num);printf("%d! = %d\n", num, result);return 0;
}

函数的作用域

函数的作用域决定了函数的可见性和可访问性。

全局函数

全局函数可以在程序的任何地方被调用,只要在调用之前进行了声明或定义。

静态函数

静态函数只能在定义它的源文件中被调用,使用 static 关键字修饰。

// 静态函数
static void staticFunction() {printf("This is a static function.\n");
}

内联函数

内联函数是一种特殊的函数,编译器会将函数体的代码直接插入到调用处,减少函数调用的开销。

内联函数的定义

使用 inline 关键字定义内联函数。

inline int add(int a, int b) {return a + b;
}

函数指针

函数指针是指向函数的指针变量,可以通过函数指针调用函数。

函数指针的定义

返回值类型 (*指针变量名)(参数列表);

代码示例

#include <stdio.h>int add(int a, int b) {return a + b;
}int main() {// 定义函数指针int (*funcPtr)(int, int) = add;int result = funcPtr(3, 5);printf("The result is: %d\n", result);return 0;
}

可变参数函数

可变参数函数可以接受可变数量的参数,使用 <stdarg.h> 头文件中的宏来实现。

示例:计算多个整数的和

#include <stdio.h>
#include <stdarg.h>// 可变参数函数
int sum(int num, ...) {va_list args;va_start(args, num);int total = 0;for (int i = 0; i < num; i++) {total += va_arg(args, int);}va_end(args);return total;
}int main() {int result = sum(3, 1, 2, 3);printf("The sum is: %d\n", result);return 0;
}

补充内容

C 语言不支持默认参数

C 语言不支持函数的默认参数功能(这是 C++ 的特性)。函数的每个参数都必须在调用时显式传递,否则会导致编译错误。

// 错误示例:C语言不支持默认参数
void printMessage(char *msg = "Hello") { // 编译错误printf("%s\n", msg);
}

数组作为函数参数

当数组作为函数参数时,实际传递的是数组的首地址(指针)。因此,函数内部无法直接获取数组长度,通常需要额外传递长度参数。
一维数组参数:

// 等价写法:int arr[] 或 int *arr
void printArray(int arr[], int size) {for (int i = 0; i < size; i++) {printf("%d ", arr[i]);}
}int main() {int arr[3] = {1, 2, 3};printArray(arr, 3);return 0;
}

多维数组参数:
多维数组作为参数时,必须指定除第一维外的所有维度大小:

void printMatrix(int mat[][3], int rows) {for (int i = 0; i < rows; i++) {for (int j = 0; j < 3; j++) {printf("%d ", mat[i][j]);}printf("\n");}
}int main() {int mat[2][3] = {{1,2,3}, {4,5,6}};printMatrix(mat, 2);return 0;
}

main 函数的命令行参数

main 函数可以通过参数接收命令行输入:

int main(int argc, char *argv[]) {// argc: 参数个数(包括程序名)// argv: 参数数组(字符串形式)for (int i = 0; i < argc; i++) {printf("Argument %d: %s\n", i, argv[i]);}return 0;
}

函数原型与头文件

在大型项目中,通常通过头文件声明函数原型,实现模块化开发:

// math_utils.h
#ifndef MATH_UTILS_H
#define MATH_UTILS_Hint add(int a, int b); // 函数声明#endif
// math_utils.c
#include "math_utils.h"int add(int a, int b) { // 函数定义return a + b; }

函数指针的应用(回调函数)

函数指针常用于实现回调机制,例如标准库函数 qsort:

#include <stdio.h>
#include <stdlib.h>// 比较函数
int compare(const void *a, const void *b) {return (*(int*)a - *(int*)b);
}int main() {int arr[] = {4, 2, 9, 5};qsort(arr, 4, sizeof(int), compare);for (int i = 0; i < 4; i++) {printf("%d ", arr[i]); // 输出 2 4 5 9}return 0;
}

可变参数的注意事项

必须至少有一个固定参数(用于确定可变参数起始位置)
类型不安全:需确保实际参数类型与 va_arg 指定的类型一致

// 错误示例:类型不匹配导致未定义行为
int result = sum(3, 1, 2.5, 3); // 2.5是double,但va_arg提取int

递归与迭代的选择

特性递归迭代
代码简洁性更简洁(适合问题自然递归的场景)相对复杂
内存占用栈空间累积,可能溢出通常固定内存占用
性能函数调用开销较大通常更快

内联函数的注意事项

  • inline 仅是建议,编译器可能忽略
  • 适合短小且频繁调用的函数
  • 定义需在调用者可见的位置(通常放在头文件中)

函数的副作用

函数副作用指除了返回值外对程序状态的修改(如修改全局变量、文件操作等)。设计函数时应尽量遵循“纯函数”原则:

// 纯函数:无副作用,输出仅依赖输入
int pureAdd(int a, int b) {return a + b;
}// 非纯函数:修改了全局变量
int counter = 0;
void impureAdd(int a, int b) {counter++;printf("Result: %d\n", a + b);
}

函数的链接属性

  • 外部链接(External Linkage):普通函数默认具有外部链接,可被其他源文件访问
  • 内部链接(Internal Linkage):使用 static 关键字修饰的函数,仅在定义文件中可见
// file1.c
static void hiddenFunc() { // 只能在本文件使用/* ... */
}// file2.c
extern void hiddenFunc(); // 链接错误:无法找到该函数

总结

C 语言的函数机制为程序提供了强大的模块化能力。深入理解参数传递方式、作用域规则、递归原理及函数指针等高级特性,能够帮助开发者编写更高效、更安全的代码。同时要注意 C 语言与其他语言(如 C++)在函数特性上的差异,避免混淆使用。

关键字:网页美工设计之中使用的主要软件是_桂林相亲网_成都百度推广公司联系电话_批量查询权重

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: