C语言中全局变量的使用与函数参数传递解析
需积分: 34 12 浏览量
更新于2024-07-13
收藏 112KB PPT 举报
全局变量在C语言中是指在任何函数外部定义的变量,它们在整个程序的生命周期内都存在,可以在多个函数之间共享数据。在给定的例子中,`speed`变量在`a.c`文件中被定义,而在`b.c`文件中通过`extern`关键字声明,表明它是一个外部变量,已经在其他地方定义过。如果希望全局变量私有,不被其他C文件访问,一种常见的做法是将其定义在某个特定的C文件内部,或者使用静态(`static`)修饰符。
```c
// 在 a.c 文件中
static int speed = 6; // 使用 static 使速度变量仅在当前文件可见
```
这样,`speed`变量就只在`a.c`文件内部可用,其他文件无法直接访问。如果需要在多个函数间共享但限制访问,可以使用静态全局变量。
函数是C语言中的基本构建块,用于组织代码并执行特定任务。函数定义包括返回类型、函数名和参数列表,如`int add(int x, int y)`。函数声明通常在调用函数之前进行,告知编译器函数的存在和参数类型,例如`extern int add(int, int);`。在头文件(`.h`)中声明函数接口是一种常见做法,而函数的实现放在对应的源文件(`.c`)中,以实现代码的模块化和封装。
函数调用有两种主要形式:直接调用,如`iSum = add(123, 98);`,以及作为另一个函数的参数,如`printf("Sum=%d\n", add(789, -56));`。实际参数(或实参)是函数调用时提供的值,形式参数(或形参)是函数定义中的占位符,它们在函数内部使用。
C语言中的参数传递默认是按值传递,这意味着形参接收的是实参的副本。例如在`swap`函数中,由于形参`x`和`y`只是实参`a`和`b`的副本,对形参的修改不会影响到实参,因此原始变量的值不会改变。若要实现交换,需通过指针传递参数,如下所示:
```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); // 通过地址传递
printf("%d, %d", a, b);
return 0;
}
```
在这个版本的`swap`函数中,我们传入了变量`a`和`b`的地址,通过解引用指针`*x`和`*y`,可以直接修改实参的值,从而实现交换。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2021-09-30 上传
2021-07-14 上传
2010-12-12 上传
2021-07-14 上传
2024-01-25 上传
2020-07-26 上传
速本
- 粉丝: 20
- 资源: 2万+