C语言函数详解:定义、声明与调用

需积分: 34 4 下载量 176 浏览量 更新于2024-07-13 收藏 112KB PPT 举报
"C语言中的函数定义与指针应用" 在C语言中,函数是代码组织的基本单元,用于实现特定的功能。函数定义的格式通常如下所示: ```c 类型 函数名(参数列表) { ... // 函数体 } ``` 例如,`int add(int x, int y)` 是一个名为`add`的函数,它接受两个整数`x`和`y`作为参数,并返回它们的和,返回值类型为整型。 函数声明用于在调用函数之前告诉编译器函数的返回类型和参数类型。如果函数定义在调用之后,我们需要先声明函数,如: ```c int add(int x, int y); // 函数声明 ``` 或者,可以省略参数名,只保留类型: ```c int add(int, int); // 参数名可省略 ``` 对于外部函数(在其他C文件中定义的函数),需要使用`extern`关键字进行声明,例如: ```c extern int add(int x, int y); ``` 在软件开发中,为了实现模块化,常将函数的声明放在`.h`头文件中,而定义放在`.c`源文件中。头文件(接口)包含函数声明,源文件(实现)包含函数的完整实现。 在C语言中,函数调用有两种常见方式:直接调用,如 `iSum = add(123, 98);` 和作为另一个函数的参数,如 `printf("Sum=%d\n", add(789, -56));` 函数参数遵循值传递原则,这意味着在函数内部对形参的修改不会影响到实参的值。例如,下面的`swap`函数试图交换两个整数,但并未成功: ```c void swap(int x, int y) { int t; t = x; x = y; y = t; } ``` 这是因为在函数调用`swap(a, b)`时,实参`a`和`b`的值被复制给了形参`x`和`y`,而`x`和`y`在函数内部的改变不会反向影响到`a`和`b`。要实现交换,我们需要使用指针: ```c void swap(int* x, int* y) { int t; t = *x; *x = *y; *y = t; } ``` 现在,`x`和`y`是指向实参`a`和`b`的指针,通过解引用操作`*x`和`*y`,我们可以直接修改`a`和`b`的值,从而实现交换。