C语言高手帮忙,求输出结果和解题思路
#include <stdio.h>
#define MAX 6
int a[MAX],i;
void sub1();
void sub2();
void sub3(int a[]);
void main()
{
sub1();
sub3(a);
sub2();
sub3(a);
}
void sub2()
{
int a[MAX],i,max;
max=4;
for(i=0;i<max;i++) a[i]=i;
}
void sub1()
{
for(i=0;i<MAX;i++) a[i]=i+i;
}
void sub3(int a[])
{
int i;
for(i=0;i<MAX;i++) printf("%3d",a[i]);
printf("\n");
}
答案:结果:
------------------------------------------
0 2 4 6 8 10
0 2 4 6 8 10
------------------------------------------
sub1();操作的是全局变量;
sub2();操作的是局部变量;
也就是说调用sub2();根本不影响全局变量的结果;
于是两次调用sub3(a);的结果是相同的。
上一个:一道C语言问题
下一个:c语言选择题: