不同作用域中的同名变量 ■不同的函数及作用域中可以使用相同名字的局部变量, 它们在内存中分属不同的存储单元,互不干扰。 例复合语句内定义变量的作用域 变量名相同,局部 #include <stdio.h> (小范围)更优先。 int main() int i=2,j=3,k; k=i+j; int k=10; 运行结果: printf(“(1)k=%d小n”,k); (1)k=10 (2)k=5 printf((2)k=%dn”,k月 return 0; 6130
不同作用域中的同名变量 ◼ 不同的函数及作用域中可以使用相同名字的局部变量, 它们在内存中分属不同的存储单元,互不干扰。 例 复合语句内定义变量的作用域 #include <stdio.h> int main() { int i=2, j=3, k; k=i+j; { int k=10; printf(“(1) k=%d\n”, k); } printf(“(2) k=%d\n”, k); return 0; } 变量名相同,局部 (小范围)更优先。 6/30
#include <stdio.h> 课堂练习 void f(int a月 int main(void) int x=10; 输出? int x=20; printf(%d小n”,x); } f(x); 运行结果: printf(%d小n3”,x); 20 return 0; 30 } 10 void f(int a) int x; x=a+20; printf(“%d小n”,x; 恩 7130
#include <stdio.h> void f(int a); int main(void) { int x=10; { int x=20; printf(“%d \n”, x); } f( x); printf(“%d \n”, x); return 0; } void f(int a) { int x; x=a+20; printf(“%d \n”, x); } 运行结果: 20 30 10 输出? 课堂练习 7/30
intp=1,q=5;1全局变量 char f2(int,int);/声明函数f2 全局变量 float f1(inta;l定义函数f1 int b,c; 全局变量p、q float p=45; 的作用范围 如果在同一个源文 件中,全局变量与 char c1,c2; 川全局变量 局部变量同名,则 main() ∥主函数 在局部变量的作用 int m,n; 范围内,全局变量 被屏蔽,即它不起 作用,如p,c1。 char f2 (int x,int y) int c1,i,j; 全局变量c1、 c2的作用范围 8/30
int p=1,q=5; //全局变量 char f2(int,int); //声明函数f2 float f1(int a) ; //定义函数f1 { int b,c; float p=45; ┆ } char c1,c2; //全局变量 main ( ) //主函数 { int m,n; ┆ } char f2 (int x, int y) { int c1,i,j; ┆ } 全局变量p、q 的作用范围 全局变量c1、 c2的作用范围 如果在同一个源文 件中,全局变量与 局部变量同名,则 在局部变量的作用 范围内,全局变量 被屏蔽,即它不起 作用,如 p,c1。 全局变量 8/30
#include <stdio.h> 全局变量举例 int a=3,b=5; int max(int a,int b); b为全部变量 int main() {int a=8; printf(“max=%dn”,max(a,b); max=8 return 0; a为局部变量,仅 int max(int a,int b) 在此函数内有效 int c; a、b为局部变量, c=a>b?a:b; 仅在此函数内有效 return c; } 9/30
#include <stdio.h> int a=3,b=5; int max(int a,int b); int main() { int a=8; printf(“max=%d\n”,max(a,b)); return 0; } int max(int a,int b) { int c; c=a>b?a:b; return c; } a为局部变量,仅 在此函数内有效 b为全部变量 全局变量举例 a、b为局部变量, 仅在此函数内有效 9/30
除非必要,不使用全局变量 ■作用:增加函数间数据联系的渠道。 ■子 空间效率:程序执行中全程占用存储单元。 ■高耦合:使函数的通用性降低了 ◆函数执行要受到外部变量的影响。 ■可读性:使用全局变量过多,会降低程序的清晰性 ◆在各个函数执行时都可能改变全局变量值,程序易出错。 恩 10130
除非必要,不使用全局变量 ◼ 作用:增加函数间数据联系的渠道。 ◼ 空间效率:程序执行中全程占用存储单元。 ◼ 高耦合:使函数的通用性降低了 ◆ 函数执行要受到外部变量的影响。 ◼ 可读性:使用全局变量过多,会降低程序的清晰性 ◆ 在各个函数执行时都可能改变全局变量值,程序易出错。 10/30