@SuHongjun
2020-04-20T07:02:06.000000Z
字数 1507
阅读 347
C语言 2020春季学期
值传递例子:
#include "stdio.h"//用户自定义函数int add(int x, int y){return x+y;}main(){int a;a = add(3,5); //值传递printf("%d\n",a);}
地址传递例子:
#include "stdio.h"int add2(int *p1, int *p2) //指针{return *p1 + *p2;}main(){int a, x=3, y=5;a = add2(&x, &y); //注意这里的 & ,取地址printf("%d\n", a);}
局部变量 与 全局变量的不同点:
- 定义变量的位置不同;
- 可见范围、作用域不同
局部变量的可见范围、作用域仅限于它所在的复合语句
全局变量的可见范围、作用域是它所在的 .c 文件,还可以通过变量声明、包含头文件的方式把作用域扩展到其它 .c文件
局部变量的例子1:
#include "stdio.h"main(){int a=5; //a 是局部变量printf("%d\n", a);}
全局变量的例子1:
#include "stdio.h"int a=5; //a 是全局变量main(){printf("%d\n", a);}
局部变量的例子2:
#include "stdio.h"int f1(int x){int n; //n是局部变量n = x * x;return n;}main(){int a, n=5; //a,n 都是局部变量printf("调用f1之前,n = %d\n", n);a = f1(3);printf("a = %d\n", a);printf("调用f1之后,n = %d\n", n);}
全局变量的例子2:
#include "stdio.h"int n=5; //n是全局变量int f1(int x){n = x * x; //n是全局变量return n;}main(){int a; //a是局部变量printf("调用f1之前,n = %d\n", n); //n是全局变量a = f1(3);printf("a = %d\n", a); //a是局部变量printf("调用f1之后,n = %d\n", n); //n是全局变量}
局部变量、全局变量的例子: --如果出现重名,以局部变量优先
#include "stdio.h"int n=5;int f1(int x){n = x * x; //n是全局变量return n;}main(){int a, n=5; //a, n 都是局部变量printf("调用f1之前,n = %d\n", n); //n是局部变量a = f1(3);printf("a = %d\n", a);printf("调用f1之后,n = %d\n", n);//n是局部变量a = f1(8);printf("再次调用f1之后,n = %d\n", n);//n是局部变量}
不同函数中,局部变量可以重名,不同函数中重名的局部变量互不相关:
#include "stdio.h"int f1(int x){int n=5; //n是局部变量n = x * x;return n;}main(){int a, n=5; //a, n 都是局部变量printf("调用f1之前,n = %d\n", n); //n是局部变量a = f1(3);printf("a = %d\n", a);printf("调用f1之后,n = %d\n", n);//n是局部变量a = f1(8);printf("再次调用f1之后,n = %d\n", n);//n是局部变量}
注意:不要滥用全局变量
滥用全局变量的弊端:
1. 难以把控变量值的变化;
2. 各模块之间的耦合变紧。
适当地使用全局变量可以简化编程