@SuHongjun
2020-04-20T07:02:06.000000Z
字数 1507
阅读 307
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. 各模块之间的耦合变紧。
适当地使用全局变量可以简化编程