C语言函数和变量的使用详解
需积分: 34 86 浏览量
更新于2024-07-13
收藏 112KB PPT 举报
全局静态变量-函数与指针
在 C 语言中,全局静态变量是一种特殊类型的变量,它们的作用域仅限于当前文件内部,不可以被其他文件访问。这种变量的定义需要前缀关键字 static,例如:
static int speed;
如果在另一个文件中尝试访问该变量,例如:
extern int speed;
编译器将会报错,无法引用该变量。这是因为全局静态变量的作用域仅限于当前文件内部,不可以被其他文件访问。
需要注意的是,全局静态变量如果不赋初值,则其初值为 0,这与普通变量不同,普通变量如果不赋初值,则其初值不可预知。
在 C 语言中,还有函数的定义和声明。函数定义的格式为:
类型 函数名(参数列表) {
// 函数体
}
例如:
int add(int x, int y) {
return x + y;
}
函数声明的格式为:
类型 函数名(参数列表);
例如:
int add(int x, int y);
如果函数在同一个文件中,则可以使用函数声明。如果函数在其他文件中,则需要使用extern关键字进行声明,例如:
extern int add(int x, int y);
在实际编程中,函数的定义通常放在 .c 文件中,而函数的声明则放在 .h 文件中,这样可以将接口和实现分离。
函数调用可以单独调用,也可以作为另一个函数的参数。例如:
iSum = add(123, 98);
printf("Sum = %d\n", add(789, -56));
在函数调用中,形式参数和实际参数是不同的。形式参数是函数定义中的参数,例如:
int add(int x, int y) {
return x + y;
}
实际参数是函数调用时传递的参数,例如:
int main(void) {
int a = 5, b = -99;
int sum = add(a, b);
printf("sum = %d\n", sum);
}
函数参数遵循值传递原则,当调用函数时,实际参数会传递给形式参数,但它们占用不同的存储地址。
例如:
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 的值,但实际上并没有交换,因为实际参数 a 和 b 的地址与形式参数 x 和 y 的地址不同。
要实现交换,需要使用指针,例如:
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 的值。
2012-10-04 上传
2009-09-25 上传
2010-12-30 上传
2023-04-06 上传
2023-05-27 上传
2023-07-14 上传
2023-04-03 上传
2023-06-08 上传
2023-06-08 上传
![](https://profile-avatar.csdnimg.cn/d20ad284481647738892efe8b10d2419_weixin_42203424.jpg!1)
顾阑
- 粉丝: 15
- 资源: 2万+
最新资源
- 计算机人脸表情动画技术发展综述
- 关系数据库的关键字搜索技术综述:模型、架构与未来趋势
- 迭代自适应逆滤波在语音情感识别中的应用
- 概念知识树在旅游领域智能分析中的应用
- 构建is-a层次与OWL本体集成:理论与算法
- 基于语义元的相似度计算方法研究:改进与有效性验证
- 网格梯度多密度聚类算法:去噪与高效聚类
- 网格服务工作流动态调度算法PGSWA研究
- 突发事件连锁反应网络模型与应急预警分析
- BA网络上的病毒营销与网站推广仿真研究
- 离散HSMM故障预测模型:有效提升系统状态预测
- 煤矿安全评价:信息融合与可拓理论的应用
- 多维度Petri网工作流模型MD_WFN:统一建模与应用研究
- 面向过程追踪的知识安全描述方法
- 基于收益的软件过程资源调度优化策略
- 多核环境下基于数据流Java的Web服务器优化实现提升性能