C语言函数和变量的使用详解
需积分: 34 183 浏览量
更新于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 的值。
1240 浏览量
276 浏览量
921 浏览量
111 浏览量
291 浏览量
点击了解资源详情
191 浏览量
点击了解资源详情
186 浏览量
顾阑
- 粉丝: 21
- 资源: 2万+
最新资源
- Manning - Code Generation In Action.pdf
- gettingthingsdone修订版.doc
- Manning - Bitter Java.pdf
- 用CodeSmith生成数据库实体类的代码 VB
- 生化工程进展(江南大学 储国成)205页PPT
- Dojo_API 文档
- Selenium深入浅出1.2.pdf
- SendMessage函数完全使用手册
- Manning - Art of Java Web Development - Struts, Tapestry, Commons, Velocity, JUnit, Axis, Cocoon,.pdf
- 实验误差理论基础.ppt
- FMS6403,单芯片带通滤波器设计IC
- WHILE循环语句的翻译程序设计(递归下降法、输出三地址表示)
- Sprint J2ME Requirements v2.2
- 美国口语教程41-50.doc
- 用CodeSmith生成数据库实体类的代码C#
- 最通俗的多播技术详解——交换机组播技术学习手册