C语言中的函数与指针:作用域和参数传递解析

需积分: 34 4 下载量 44 浏览量 更新于2024-07-13 收藏 112KB PPT 举报
"变量的作用域、函数定义与调用、指针在函数中的应用" 在C语言编程中,变量的作用域决定了变量在程序中的可见范围。主要有四种类型的变量作用域: 1. **局部变量**:这类变量在函数内部定义,只在该函数的代码块中有效,函数执行完毕后,其内存会被释放。例如: ```c void someFunction() { int localVar; // 局部变量 } ``` 2. **全局变量**:在所有函数外部定义的变量,可以在整个程序中访问。但如果在其他文件中使用,需要通过`extern`关键字声明。例如: ```c int globalVar; // 全局变量 extern int globalVar; // 在其他文件中声明全局变量 ``` 3. **局部静态变量**:在函数内部定义,并使用`static`关键字修饰。这类变量不会在每次函数调用时初始化,而是在程序运行期间保持其值。例如: ```c void someFunction() { static int localStaticVar = 0; // 局部静态变量,只初始化一次 } ``` 4. **全局静态变量**:在函数外部定义,同时使用`static`关键字修饰。这类变量只在其定义的文件中可见,提供了有限的全局作用域。例如: ```c static int globalStaticVar; // 全局静态变量,只在当前文件可见 ``` 函数是C语言中组织代码的基本单元。函数定义包括函数类型、函数名以及参数列表,如: ```c int add(int x, int y) { return x + y; } ``` 函数声明用于告知编译器函数的存在和其参数类型,使得在函数定义之前可以调用。例如: ```c int add(int, int); // 函数声明 ``` 函数调用时,传入的值被称为**实际参数**,在函数内部使用的则是**形式参数**。C语言中,函数参数遵循值传递原则,意味着形式参数是实际参数的一个副本,对形式参数的修改不会影响实际参数的值,例如: ```c int main(void) { int a = 5, b = -99; int sum = add(a, b); // 实际参数a, b传递给形式参数x, y } ``` 对于需要修改实际参数值的情况,需要使用指针作为函数参数。在`swap`函数的例子中,使用指针可以实现两个变量的交换: ```c void swap(int *x, int *y) { int t; t = *x; *x = *y; *y = t; } int main(void) { int a = 5, b = -3; swap(&a, &b); // 传入变量的地址,实现交换 } ``` 这样,通过指针间接操作实际参数,函数内部对形参的修改会影响到实参的值。