#include <stdio.h>
int b=2;
int fun(int *k)
{
b=*k+b;
return b;
}
int main()
{
int a[10]={1,2,3,4,5,6,7,8},i;
for(i=2;i<4;i++)
{
b=b+fun(&a[i]);
printf("%d ",b);
}
return 0;
}
这个程序运行的结果是10和28,我只是很想问问,一开始的int b=2是全局变量,在fun函数的那句b=*k+b;不应该是局部变量吗,那函数结束后这个b发值不应该消失了吗?就算return 的是b;那我也觉得应该是调用函数那个地方是fun函数中b的值,为什么它前边的b也是fun函数那个b的值?问题就在这
供参考:http://c.biancheng.net/view/1859.html
首先需要明确一点:return是函数的一个返回值,谁调用的这个函数,就把这个值返回给谁。
fun函数中return b;将b的值返回,假如是b1,所以此时b的值为b1,又因为fun函数的函数返回值也是b,而b=b1,所以此时b
值和fun函数返回值相等