被调函数的作用域问题
2010-11-08 13:55
288 查看
认知一:
c语言程序设计无非是变量,操作语句,以及函数。
函数为结构化设计创造了条件,函数有有参数,和无参数之分。有参数的函数主要是对函数的调用很有意义的。无参数的函数,虽可以实现c编程的结构化,但它造成了变量的混乱,即被调用函数中的变量和主函数中变量的混乱。在上万行的c程序里,可以想象这种混乱将造成多少程序的错误和团队合作的难度。
我个人认为:这便是函数参数的意义之所在。
论证:
#include"stdio.h"
hellow ()
{
int a;
a=a+3;
return a;
}
main ()
{
int a;
a=5;
hellow();
printf ("a=%d",a);
}
TC3.0下的运行结果是:a=5
#include"stdio.h"
hellow (int a)
{
a=a+3;
return a;
}
main ()
{
int a;
a=5;
hellow(a);
printf ("a=%d",a);
}
TC3.0下的运行结果是:a=5
#include"stdio.h"
hellow (int *a)
{
*a=*a+3;
return *a;
}
main ()
{
int *a;
*a=5;
hellow(a);
printf ("*a=%d",*a);
}
TC3.0下的运行结果是:*a=8
结论:
被调函数的变量被封装,作用域仅在其函数体内部,主函数中的变量也是无法干预的。
c语言程序设计无非是变量,操作语句,以及函数。
函数为结构化设计创造了条件,函数有有参数,和无参数之分。有参数的函数主要是对函数的调用很有意义的。无参数的函数,虽可以实现c编程的结构化,但它造成了变量的混乱,即被调用函数中的变量和主函数中变量的混乱。在上万行的c程序里,可以想象这种混乱将造成多少程序的错误和团队合作的难度。
我个人认为:这便是函数参数的意义之所在。
论证:
#include"stdio.h"
hellow ()
{
int a;
a=a+3;
return a;
}
main ()
{
int a;
a=5;
hellow();
printf ("a=%d",a);
}
TC3.0下的运行结果是:a=5
#include"stdio.h"
hellow (int a)
{
a=a+3;
return a;
}
main ()
{
int a;
a=5;
hellow(a);
printf ("a=%d",a);
}
TC3.0下的运行结果是:a=5
#include"stdio.h"
hellow (int *a)
{
*a=*a+3;
return *a;
}
main ()
{
int *a;
*a=5;
hellow(a);
printf ("*a=%d",*a);
}
TC3.0下的运行结果是:*a=8
结论:
被调函数的变量被封装,作用域仅在其函数体内部,主函数中的变量也是无法干预的。
相关文章推荐
- 函数放到onload里面,在html里面执行函数会报错-----作用域和闭包相关问题
- Shell中的函数、函数定义、作用域问题介绍
- 类的作用域问题,形参表函数体处在作用域中,而函数返回类型不一定在作用域中
- java内部类的作用(一)----解决函数参数返回的问题
- ES6,箭头函数解决this作用域问题
- 彻底弄懂Qt的编码(汉字乱码问题及相关函数作用)
- 关于php页面最大执行时间问题(set_time_limit函数在windows下不起作用的解决)
- 关于php页面最大执行时间问题(set_time_limit函数在windows下不起作用的解决)
- 彻底弄懂Qt的编码(汉字乱码问题及相关函数作用)
- Shell中的函数、函数定义、作用域问题介绍
- 函数作用域导致的问题
- JavaScript 内部函数作用域问题及解决方法
- js使用立即调用的函数表达式创建局部作用域问题
- 关于php页面最大执行时间问题(set_time_limit函数在windows下不起作用的解决)
- settimeout的执行函数作用域问题
- 通过自执行函数实现块级作用域时变量作用域问题。
- js中三种函数的效率、解析顺序、作用域问题解决
- 彻底弄懂Qt的编码(汉字乱码问题及相关函数作用)
- cocos2d-x 音频在 Android 播放问题, preloadEffect 函数作用
- 关于《程序员编程宝典》中编写一个函数,作用是把一个char组成的字符串循环右移n位的问题