C语言教学过程
----教学过程局部变量和全局变量
局部变量在一个函数内部定义的变量,它只在本函数内部范围内有效,在函数外部无法使用这些变量例子,
#include <stdio.h>
#include <stdlib.h>
void test(int x,int y);
局部变量和全局变量 (程序一 )
void test(int x,int y)
{
int a=0,b=1;
printf("\n");
printf("test函数中 a=%d,b=%d\n",a,b);
printf("test函数中 变量 a的内存地址为:
%d\n",&a);
printf("test函数中 变量 b的内存地址为:
%d\n",&b);
printf("\n");
printf("test函数中 x=%d,y=%d\n",x,y);
}
局部变量和全局变量 (程序一 )
main()
{
int a=10,b=20;
printf("main函数中 a=%d,b=%d\n",a,b);
printf("main函数中 变量 a的内存地址为:
%d\n",&a);
printf("main函数中 变量 b的内存地址为:
%d\n",&b);
test(a,b);
system("pause");
}
局部变量和全局变量说明,
1.在上程序中,主函数中定义的变量 a,b,只在主函数中有效,不能用于 main函数的外部,同时,main函数也不能够使用其它函数中定义的变量。
2.在 main函数中和 test函数中都使用了变量名 a,b。说明在不同函数中可以使用相同的变量名,它们代表不同的对象,在内存中的地址也不一样局部变量和全局变量
3.形式参数也是局部变量,例如上述程序中,参数 x,y只在 test函数中有效,其他函数不能调用 (包括 main函数 )
4.在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效,
出了复合语句的范围,则该变量无效例如,
局部变量和全局变量 (程序二 )
#include <stdio.h>
#include <stdlib.h>
main()
{
int a=10,b=20,i=0;
printf("复合语句外 a=%d,b=%d\n",a,b);
printf("\n");
{
int i=100;
printf("复合语句中 i = %d\n",i);
printf("复合语句中 i 的地址为,%d\n",&i);
printf("复合语句中 a=%d,b=%d\n",a,b);
}
局部变量和全局变量 (程序二 )
printf("\n");
printf("复合语句外 i = %d\n",i);
printf("复合语句外 i 的地址为:
%d\n",&i);
system("pause");
}
局部变量和全局变量 (程序二 )
注意,
在上述程序中,main函数中定义的 i作用范围虽然是整个 main函数,但复合语句中也定义了变量 I,所以复合语句内的变量 I和 main函数中定义的 i是不同的变量,
如果复合函数中没有定义变量 i,则
main函数中定义的变量在复合函数中有效局部变量和全局变量
全局变量一个源文件中包含一个或若干个变量,
在函数外定义的变量称为外部变量,外部变量是全局变量(全程变量)
外部变量的作用范围可以从定义变量的位置开始到本源文件结束。
如果全局变量和局部变量同名,则在局部变量的范围内全局变量的值无效局部变量和全局变量
#include <stdio.h>
#include <stdlib.h>
int test1=0;
void f1()
{
printf("在 f1函数中变量 test1的值为,%d\n",test1);
printf("在 f1函数中变量 test1的地址为,%d\n",&test1);
printf("\n");
}
int test2=100;
void f2()
{
局部变量和全局变量
printf("在 f2函数中变量 test1的值为,%d\n",test1);
printf("在 f2函数中变量 test1的地址为,%d\n",&test1);
printf("\n");
}
main()
{
printf("在 main函数中变量 test1的值为,%d\n",test1);
printf("在 main函数中变量 test1的地址为,%d\n",&test1);
printf("\n");
f1();
f2();
system("pause");
}
局部变量和全局变量
注意:
全局变量的使用是为了加强函数间数据联系的渠道。
上述程序中,变量 test1的作用范围是
f1,f2和 main函数,变量 test2的作用范围是 f2和 main函数局部变量和全局变量 (程序三 )
P181 T8.18
#include <stdio.h>
#include <stdlib.h>
int daynum(int year,int month,int day)
{
int i,sum=0,a[11]={31,29,31,30,31,30,31,31,30,31,30};
if(((year%4==0)&&(year%100!=0))||(year%400==0))
{
for(i=0;i<month-1;i++)
{
sum =sum +a[i];
}
局部变量和全局变量 (程序三 )
sum=sum+day;
}
else
{
for(i=0;i<month-1;i++)
{
if(i==1)
{
sum=sum+a[i]-1;
continue;
}
sum=sum+a[i];
局部变量和全局变量 (程序三 )
} sum=sum+day;
}
return(sum);
}
main()
{
int year,month,day,result;
printf("please input the date(年,月,日 ):\n");
scanf("%d,%d,%d",&year,&month,&day);
result=daynum(year,month,day);
printf("该日期是当年的第 %d 天 \n",result);
system("pause"); }