简述什么是形参和实参,参数传递的方式有哪些?
展开全部
用数学中的函数对比,如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这个形参来说,它的值初始化为了实参,因此是传值。
最本质的理解方法是,从内存的角度,给某个变量赋值无外乎在某个地方内存中写值,因此你需要关注目标内存是否被改变。比如,给指针形参指向的内存写值时,写的就是实参指向的内存,这就是传址的本质。
亚远景信息科技
2024-12-11 广告
2024-12-11 广告
上海亚远景信息科技有限公司是国内汽车行业咨询及评估领军机构之一,深耕于ASPICE、敏捷SPICE、ISO26262功能安全、ISO21434车辆网络安全领域,拥有20年以上的行业经验,专精于培训、咨询及评估服务,广受全球车厂及供应商赞誉,...
点击进入详情页
本回答由亚远景信息科技提供
展开全部
举个简单例子来说明:
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++里总的来分的话就是分为改变实参值的传递(指针、引用)和不改变实参值的传递(传值)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询