关于函数参数传递的意义

GIantPerson 2010-11-07 10:56:52
最近对函数参数传递,思考了很久,略有感触,在此和各位仁人志士探讨,学习。
c语言程序设计无非是变量,操作语句,以及函数。
函数为结构化设计创造了条件,函数有有参数,和无参数之分。有参数的函数主要是对函数的调用很有意义的。无参数的函数,虽可以实现c编程的结构化,但它造成了变量的混乱,即被调用函数中的变量和主函数中变量的混乱。在上万行的c程序里,可以想象这种混乱将造成多少程序的错误和团队合作的难度。
我个人认为:这便是函数参数的意义之所在。
...全文
240 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
heis07w 2010-11-08
  • 打赏
  • 举报
回复
汇 编 的栈 指针, 幀指针
觉醒之刃 2010-11-08
  • 打赏
  • 举报
回复
你的意思就是命名规则的问题
软件工程做的比较好的地方不会乱的

而且就算乱了一般也不太会造成致命后果
FrankHB1989 2010-11-08
  • 打赏
  • 举报
回复
name/identifier和scpoe相关,variant作为object,和storage duration相关。
所以要清楚点说的话,讨论变量的作用域才有意义。
GIantPerson 2010-11-08
  • 打赏
  • 举报
回复
见笑啦!
知之为不知,不知更非知!水平不同,境界不同嘛。贵在各抒胸怀,提高水平。
知错了,改正了。
赵4老师 2010-11-08
  • 打赏
  • 举报
回复
VC调试时按Alt+8,TC或BC用TD调试,打开汇编窗口看每句C对应的汇编不就啥都明白了吗。
(Linux或Unix下应该也可以在用GDB调试时,看每句C对应的汇编。)
想要从本质上理解C指针,必须学习汇编以及C和汇编的对应关系。
从汇编的角度理解和学习C语言的指针,原本看似复杂的东西就会变得非常简单!
staare 2010-11-08
  • 打赏
  • 举报
回复
如果不能传参数的话,递归的时候怎么办?
qybao 2010-11-08
  • 打赏
  • 举报
回复
LZ好好理解一下变量的作用域
wissup 2010-11-08
  • 打赏
  • 举报
回复
建议学习一下计算机语言!关于参数的含义。
gp341 2010-11-08
  • 打赏
  • 举报
回复
这个新手真是够新的
walkersfaint 2010-11-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 giantperson 的回复:]
引用 1 楼 jhangverita 的回复:
函数内部变量对其外部是不可见的,其作用域只是在其内部,所以不存在变量混乱的问题。
而且一般开发中都会把函数定义在库函数中,然后通过源文件调用。一般不会出现楼主所说的问题。
无参有参要视具体情况而定。

首先谢谢你的意见。
那么,主函数中的变量,它的作用域是整个主函数结束,它可以渗透到调用函数中,倘若调用函数中的变量名和主函数变量名相同,请……
[/Quote]
不会改变,相同的变量名,就算是全局变量,当在实际的函数中,你申请了一个相同的局部变量,也是有效为局部变量,不会改变到全局变量的,PS:除非你没申请局部变量
iambic 2010-11-08
  • 打赏
  • 举报
回复
说的太玄乎了。当你把这些东西都当作平常物的时候才算真正体会吧。
roctang2006 2010-11-08
  • 打赏
  • 举报
回复
谭老师的书上也说,尽量不要大量使用全局变量,而采用参数传递。
jhangverita 2010-11-07
  • 打赏
  • 举报
回复
全局变量会被局部变量屏蔽室对的。
后面不要这样理解为好。函数参数功能很多,比如写一个交换两个变量值a,b的函数change

void change(int *a, int *b)
{
int c;
c=*a;
*a=*b;
*b=c;
}

int main()
{
int a=2, b=3;
change(&a,&b);
return 0;
}

这里面参数做了返回值。
等等。。。
adooadoo 2010-11-07
  • 打赏
  • 举报
回复
我觉得就算是全局变量,也会被函数体内的局部变量所屏蔽…有参函数我多半看成一个封装好的东西,我告诉它入口,它算结果…不知理解对否
GIantPerson 2010-11-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jhangverita 的回复:]
函数内部变量对其外部是不可见的,其作用域只是在其内部,所以不存在变量混乱的问题。
而且一般开发中都会把函数定义在库函数中,然后通过源文件调用。一般不会出现楼主所说的问题。
无参有参要视具体情况而定。
[/Quote]
首先谢谢你的意见。
那么,主函数中的变量,它的作用域是整个主函数结束,它可以渗透到调用函数中,倘若调用函数中的变量名和主函数变量名相同,请问他们是不是同一个变量?被调函数中的变量值发生改变,是否影响主函数同名变量的值?
jhangverita 2010-11-07
  • 打赏
  • 举报
回复
main函数也是函数,他调用别的函数,他的变量对调用的函数是无效的。
GIantPerson 2010-11-07
  • 打赏
  • 举报
回复
首先谢谢你的意见。
那么,主函数中的变量,它的作用域是整个主函数结束,它可以渗透到调用函数中,倘若调用函数中的变量名和主函数变量名相同,请问他们是不是同一个变量?
jhangverita 2010-11-07
  • 打赏
  • 举报
回复
函数内部变量对其外部是不可见的,其作用域只是在其内部,所以不存在变量混乱的问题。
而且一般开发中都会把函数定义在库函数中,然后通过源文件调用。一般不会出现楼主所说的问题。
无参有参要视具体情况而定。

69,372

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧