癞蛤蟆丶ccc 发表于 2020-11-22 20:37:22

函数题

#include<stdio.h>
inta ;
intmain( ){
voidf1( ) ;
voidf2( ) ;
voidprint( ) ;
f1( ) ;
print( ) ;
f2( ) ;
print( ) ;
return 0 ;
}
voidf1( ){
inti ;
for ( i = 0 ; i < 3 ; i++ )
    a = i ;
}
voidf2( ){
inti ,a ;
for ( i = 0 ; i < 3 ; i++ )
    a = i ;
}
voidprint( ){
inti ;
for ( i = 0 ; i < 3 ; i++ )
    printf( "%3d" , a ) ;
}
这个题没有给函数传值 也没有return 他是怎么做到的数组a里面还有值的 然后print()函数输出a数组 然后f2函数里面数组a又重新赋值一遍的
运行结果是   012012

jackz007 发表于 2020-11-22 21:09:31

本帖最后由 jackz007 于 2020-11-22 21:21 编辑

#include<stdio.h>
inta ;                  // a[] 是全局变量
. . . . . .
voidf1( ){
. . . . . .
    a = i ;               // 为全局变量 a[] 赋值

voidf2( ){
inti , a ;            // 在函数中定义 a[] 为局部变量,与同名全局变量无关
. . . . . .
    a = i ;               // 为局部变量 a[] 赋值

voidprint( ){
. . . . . .
    printf( "%3d" , a ) ; // 打印全局变量的数值
      main() 中调用 f1() 的时候会为全局变量 a[] 赋值,然后,在调用 print() 的时候,会把全局变量 a[] 的内容打印出来。又由于调用了 2 次 print() ,所以,a[] 的内容被连续打印了 2 次。

癞蛤蟆丶ccc 发表于 2020-11-22 22:31:23

jackz007 发表于 2020-11-22 21:09
main() 中调用 f1() 的时候会为全局变量 a[] 赋值,然后,在调用 print() 的时候,会把全局变量...

这个赋值和return有啥区别 我有点搞不清 我记得他那个函数有个变量用完就释放了

癞蛤蟆丶ccc 发表于 2020-11-22 22:32:58

jackz007 发表于 2020-11-22 21:09
main() 中调用 f1() 的时候会为全局变量 a[] 赋值,然后,在调用 print() 的时候,会把全局变量...

不知道你懂不懂我的意思{:10_247:}{:10_266:}说的有点不清楚

jackz007 发表于 2020-11-22 22:36:56

癞蛤蟆丶ccc 发表于 2020-11-22 22:32
不知道你懂不懂我的意思说的有点不清楚

      main() 中从未引用任何函数的返回值,其它函数也一样,和任何 return 都没有关系。
页: [1]
查看完整版本: 函数题