1、通过函数的参数显示传递:
专注于为中小企业提供成都网站设计、网站制作服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业中站免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上1000+企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
a(int
a)
{
a
=
a+2;
}
b(void)
{
int
b
=
3;
a(b);
}
在函数a中a作为一个参数传入函数中进行运算,那么a就可以算作是a的输入,然后在程序内部a进行了运算后值变了,那么运算后的a又算作是a函数的输出。
2、通过全局变量隐式传递:
全局变量你应该知道吧,简单点说就是作用域涵盖整个程序的变量(当然要看具体情况)。
假设a为int型全局变量,初始值为1:int
a
=
1;
a()
{
a
=
a
+
2;
}
b()
{
a
=
a
+
3;
}
main()
{
a();
b();
a();
}
通过main函数我们可以看到,程序首先执行的是函数a,那么执行完函数a后全局变量a的值由初始值1变成了3,然后又继续执行函数b,注意此时函数b也是对a进行运算,那么此时全局变量a成了b的输入,运算后a的值为了6,此时a为b的输出。那么也就是说全局变量a在经过a函数的改变后作为一个输入隐式的传入了b函数,然后经过b函数的运算又算作是b的输出。执行过b函数后程序又遇到了a函数,那么此时经过b函数运算的a又作为a函数的一个输入了。
对于全局变量,如果在函数中修改了值,则全局变量的值就会被改变,在其他函数中访问的就是修改后的值;
但是,如果在函数中定义了跟全局变量名称一样的局部变量,则函数中修改的是局部变量,全局变量的值是无法被修改的。
int
a,b;
//全局变量A,B
void
fun()
{a=100,b=200;}
//局部变量A,B,不会影响到MAIN里面A,B,只是改变了全局变量A,B
main()
{int
a=5,b=7;
//局部变量A,B
fun()
printf("%d%d\n",a,b);
//局部变量A,B,将全局变量A,B屏蔽
}int
a,b;
//全局变量A,B
void
fun()
{a=100,b=200;}
//局部变量A,B,不会影响到MAIN里面A,B,只是改变了全局变量A,B
main()
{int
a=5,b=7;
//局部变量A,B
fun()
printf("%d%d\n",a,b);
//局部变量A,B,将全局变量A,B屏蔽
}int
a,b;
//全局变量A,B
void
fun()
{a=100,b=200;}
//局部变量A,B,不会影响到MAIN里面A,B,只是改变了全局变量A,B
main()
{int
a=5,b=7;
//局部变量A,B
fun()
printf("%d%d\n",a,b);
//局部变量A,B,将全局变量A,B屏蔽
}int
a,b;
//全局变量A,B
void
fun()
{a=100,b=200;}
//局部变量A,B,不会影响到MAIN里面A,B,只是改变了全局变量A,B
main()
{int
a=5,b=7;
//局部变量A,B
fun()
printf("%d%d\n",a,b);
//局部变量A,B,将全局变量A,B屏蔽
}
答案:
你在开头定义的int
a,b;
这个a,b在你整个文件里都起作用。
但是,你在main函数里面又定义了一个a,b;
那么在main函数里面你使用的所有a,b,都是局部定义的a,b,因为在main函数里面全局变量a,b被屏蔽了。
你可以这样改一下,就能明白了:
#include
int
a,b;
void
fun()
{a=100,b=200;
printf("全局变量a,b分别为:%d,%d\n",a,b);
}
main()
{int
a=5,b=7;
fun()
printf("main函数里定义的局部变量a,b分别为:%d,%d\n",a,b);
}
悉雨辰寂答案:
你在开头定义的int
a,b;
这个a,b在你整个文件里都起作用。
但是,你在main函数里面又定义了一个a,b;
那么在main函数里面你使用的所有a,b,都是局部定义的a,b,因为在main函数里面全局变量a,b被屏蔽了。
你可以这样改一下,就能明白了:
#include
int
a,b;
void
fun()
{a=100,b=200;
printf("全局变量a,b分别为:%d,%d\n",a,b);
}
main()
{int
a=5,b=7;
fun()
printf("main函数里定义的局部变量a,b分别为:%d,%d\n",a,b);
}
悉雨辰寂答案:
你在开头定义的int
a,b;
这个a,b在你整个文件里都起作用。
但是,你在main函数里面又定义了一个a,b;
那么在main函数里面你使用的所有a,b,都是局部定义的a,b,因为在main函数里面全局变量a,b被屏蔽了。
你可以这样改一下,就能明白了:
#include
int
a,b;
void
fun()
{a=100,b=200;
printf("全局变量a,b分别为:%d,%d\n",a,b);
}
main()
{int
a=5,b=7;
fun()
printf("main函数里定义的局部变量a,b分别为:%d,%d\n",a,b);
}
悉雨辰寂答案:
你在开头定义的int
a,b;
这个a,b在你整个文件里都起作用。
但是,你在main函数里面又定义了一个a,b;
那么在main函数里面你使用的所有a,b,都是局部定义的a,b,因为在main函数里面全局变量a,b被屏蔽了。
你可以这样改一下,就能明白了:
#include
int
a,b;
void
fun()
{a=100,b=200;
printf("全局变量a,b分别为:%d,%d\n",a,b);
}
main()
{int
a=5,b=7;
fun()
printf("main函数里定义的局部变量a,b分别为:%d,%d\n",a,b);
}
悉雨辰寂答案:
你在开头定义的int
a,b;
这个a,b在你整个文件里都起作用。
但是,你在main函数里面又定义了一个a,b;
那么在main函数里面你使用的所有a,b,都是局部定义的a,b,因为在main函数里面全局变量a,b被屏蔽了。
你可以这样改一下,就能明白了:
#include
int
a,b;
void
fun()
{a=100,b=200;
printf("全局变量a,b分别为:%d,%d\n",a,b);
}
main()
{int
a=5,b=7;
fun()
printf("main函数里定义的局部变量a,b分别为:%d,%d\n",a,b);
}
悉雨辰寂答案:
你在开头定义的int
a,b;
这个a,b在你整个文件里都起作用。
但是,你在main函数里面又定义了一个a,b;
那么在main函数里面你使用的所有a,b,都是局部定义的a,b,因为在main函数里面全局变量a,b被屏蔽了。
你可以这样改一下,就能明白了:
#include
int
a,b;
void
fun()
{a=100,b=200;
printf("全局变量a,b分别为:%d,%d\n",a,b);
}
main()
{int
a=5,b=7;
fun()
printf("main函数里定义的局部变量a,b分别为:%d,%d\n",a,b);
}
悉雨辰寂
两种方法都可以的啊,没有绝对的好坏,要看情况。
全局变量的好处在于,用起来的确很方便,但是用多了会破坏代码的安全性,结构性。非到万不得已,最好不用。(话这么说,好像我还没见过那个稍微大点的程序没有全局变量的。)
传参数的好处么就是,程序比较容易读懂,结构也比较好。但是问题是,如果你的参数很大,比如你每次要传一个很大的结构体,那么就比较容易浪费资源了。传参数不怎么耗时的,关键是看对内存的使用。
所以,如果你不用全局,又想节约资源的传参数,那就只有指针咯。你每次把你的数据的地址当参数传进去,那么,不论你实际的数据有多大,你的参数,仅仅是一个指针,在32位机上,就是永远占4字节的大小。
static变量和main函数外面定义的变量为全局变量,比如
#include"stdio.h"
int a=3,b=5;//全局变量
max(int a,int b)
{
int c;
c=ab?a:b;
return c;
}
main()
{ int a=8;
printf("%d\n",max(a,b));
}附图
还有max(int a,int b)
{int c;//局部,运行完函数后c占用的内存空间就被释放,即c消失了
c=ab?a:b;
return c;
}
main()
{ extern int a,b;//extern此处为全局变量,或者这样定义static int a,b;
printf("%d\n",max(a,b));
}
int a=3,b=5;
我和你一样是新手,但是我看了很多也做了很多
全局变量最好是少用,你想啊,你这里定义了一个全局变量,在这个函数中改了一下,另外的一个函数中又改了一下,用的少了还行,用的多了呢,你知道最后一次是谁给改的吗
在说写对的话,代码很难读
你上面的想法完全正确,可以用,但是那程序太简单了,没多大意义,所以作为练习是可以的,学习的过程和使用的过程差距很大啊,我一个新手总结的
呵呵
一起学习