形参,在f()函数定义中,是这个函数的局部变量名,相当于在main()中定义int i,在f()中也定义一个int i,但两个函数的i是完全没有关系。事实上,你可以在所有函数中都定义一个int i,它们都互不相干。这就是形参,是“形式参数”的简称,之所以是形式,是因为这仅仅是名字,不是传入的参数本身。在f()定义中,写成f(int j),对代码的实际效果没有改变,完全完全是一样的!形参的名字不重要,数据类型才重要,所以在C/C++的函数原型声明中,编译器只要f(int)就可以了,连变量名都不需要,它只校验传入的参数是不是int型。参数的数据类型,起一种叫“签名”的作用,有如中国古人的“字”,同名同姓没问题,连字都相同,那才是真的同一个人,编译器就靠这样的办法识别函数,函数名相同也没关系,f(int i)和f(double i)是两个不同的函数,它区分得出来。
真正传入函数的参数,是实参。在main()处调用函数f(i),把main()中i的当前值(此时i=6)传过去给f(),此时f()的i就被赋值为6,这是复制过去,犹如复印,值一样,但存放值的容器不一样,此时,在f()中的i干什么,与main()中的i无关。因此,f()中i即使被改为99,main()中的i是不变的,仍然是6。
复印文件,你在复印件上签字,原件上不会有你的名字。就是这个道理。
[
本帖最后由 TonyDeng 于 2011-10-4 13:15 编辑 ]