简述什么是形参和实参,参数传递的方式有哪些?
2个回答
展开全部
用数学中的函数对比,如f(x) = 2x + 10
f(x)是返回值,x是形参,当你给x赋值为5时,实参是5,当赋值为10时,实参是10
因此,概括的说实参是某次函数调用时给形参的赋值
参数传递方式本质上只有一种,即传值。
传址与传引用都是传值的概念转换,比如
void calc(int * ptr);
在调用时,表面上是传址,但对ptr这个形参来说,它的值初始化为了实参,因此是传值。
最本质的理解方法是,从内存的角度,给某个变量赋值无外乎在某个地方内存中写值,因此你需要关注目标内存是否被改变。比如,给指针形参指向的内存写值时,写的就是实参指向的内存,这就是传址的本质。
f(x)是返回值,x是形参,当你给x赋值为5时,实参是5,当赋值为10时,实参是10
因此,概括的说实参是某次函数调用时给形参的赋值
参数传递方式本质上只有一种,即传值。
传址与传引用都是传值的概念转换,比如
void calc(int * ptr);
在调用时,表面上是传址,但对ptr这个形参来说,它的值初始化为了实参,因此是传值。
最本质的理解方法是,从内存的角度,给某个变量赋值无外乎在某个地方内存中写值,因此你需要关注目标内存是否被改变。比如,给指针形参指向的内存写值时,写的就是实参指向的内存,这就是传址的本质。
展开全部
举个简单例子来说明:
int func(int a , int b) {return a + b ;}
这里a和b是形式参数,这个时候a和b的值是未知的。
等调用的时候如: fun(5,6) ,这里 a = 5 , b =6 ,这里的5和6对于函数func来说就是实参,代表实实在在的值,而不是被一个名称指代,那么这个函数就会变成:
fun(5,6) {return 5+6;}
函数里面a的值都被5代替,b的值都被6代替。
由于是形式参数,a的值可以是任意的整形值,同时b的值也可以是任意的整型值(这里面有一些数的界的问题这里不做考虑)。因此你写出一个func函数,你就可以对所有的二项加法应用:
5+6 func(5,6)
11+22 func(11,22)
-13 + 43 func(-13,43)
说了这些你应该也能大体明白实参和形参的区别了。
至于参数传递的方式,在C++里总的来分的话就是分为改变实参值的传递(指针、引用)和不改变实参值的传递(传值)
int func(int a , int b) {return a + b ;}
这里a和b是形式参数,这个时候a和b的值是未知的。
等调用的时候如: fun(5,6) ,这里 a = 5 , b =6 ,这里的5和6对于函数func来说就是实参,代表实实在在的值,而不是被一个名称指代,那么这个函数就会变成:
fun(5,6) {return 5+6;}
函数里面a的值都被5代替,b的值都被6代替。
由于是形式参数,a的值可以是任意的整形值,同时b的值也可以是任意的整型值(这里面有一些数的界的问题这里不做考虑)。因此你写出一个func函数,你就可以对所有的二项加法应用:
5+6 func(5,6)
11+22 func(11,22)
-13 + 43 func(-13,43)
说了这些你应该也能大体明白实参和形参的区别了。
至于参数传递的方式,在C++里总的来分的话就是分为改变实参值的传递(指针、引用)和不改变实参值的传递(传值)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询