C++中什么是函数传参 谢谢
展开全部
传参,哈哈!回头来看,这些狗屁术语都是多么的幼稚,多么的没远见和品位,都就是******翻译和意淫的结果,纯粹误人子弟!
传,是什么意思?传递呗!既为传递,那么应有发送者和接受者两个实体的概念,但是当你调用一个函数时,你有感觉到两个实体的存在吗?完全没有,仅仅一个调用者而且,被调用的函数不能算着一个实体,它仅仅是可供执行的代码的集合,因此准确的说,不叫传参,应该叫根据某某数据执行某某方法。。。。这下你懂了吧!
记住我的一句话,要想深刻理解编程,必先深刻体会骂人!
传,是什么意思?传递呗!既为传递,那么应有发送者和接受者两个实体的概念,但是当你调用一个函数时,你有感觉到两个实体的存在吗?完全没有,仅仅一个调用者而且,被调用的函数不能算着一个实体,它仅仅是可供执行的代码的集合,因此准确的说,不叫传参,应该叫根据某某数据执行某某方法。。。。这下你懂了吧!
记住我的一句话,要想深刻理解编程,必先深刻体会骂人!
展开全部
函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题。基本的参数传递机制有两种:值传递和引用传递。以下讨论称调用其他函数的函数为主调函数,被调用的函数为被调函数。
值传递(passl-by-value)过程中,被调函数的形式参数作为被调函数的局部变量处理,即在堆栈中开辟了内存空间以存放由主调函数放进来的实 参的值,从而成为了实参的一个副本。值传递的特点是被调函数对形式参数的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值。
引 用传递(pass-by-reference)过程中,被调函数的形式参数虽然也作为局部变量在堆栈中开辟了内存空间,但是这时存放的是由主调函数放进来 的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过堆栈中存放的地址访问主调函数中的实参变量。正因为如此,被调函数对形参做的任何 操作都影响了主调函数中的实参变量。
作为函数的传递:
#include "stdafx.h"
#include "iostream"
using namespace std;
float MF1 (float x,float b1,float b2,float b3,float b4,float c)//测试的隶属函数
{
if(x <=c)
{
return b1*(x-b2);
}
else
{
return b3*(b4-x);
}
}
float integral(float(*fun)(float x,float b1,float b2,float b3,float b4,float c),float a,float b,int n)
{
float s;
float h;
float y;
int i;
s=(fun(a,2,3,4,5,6)+fun(b,1,3,4,5,6))/2; /*区间段上函数值评均*/
h=(b-a)/n; /*积分步长*/
for(i=1;i <n;i++)
{
s=s+fun(a+i*h,2,3,4,5,6); /*分段叠加*/
y=s*h;
}
return y;/*返回积分值*/
}
int sum(int a , int b)
{
return a+b;
}
int TotalSum(int(*fun)(int a, int b),int c, int d)
{
return fun(2,3)+c+d;
}
void main()
{
//float y= integral(MF1,100,20,1000);
int y=TotalSum(sum,4,5);
cout<<y;
cin>>y;
}
值传递(passl-by-value)过程中,被调函数的形式参数作为被调函数的局部变量处理,即在堆栈中开辟了内存空间以存放由主调函数放进来的实 参的值,从而成为了实参的一个副本。值传递的特点是被调函数对形式参数的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值。
引 用传递(pass-by-reference)过程中,被调函数的形式参数虽然也作为局部变量在堆栈中开辟了内存空间,但是这时存放的是由主调函数放进来 的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过堆栈中存放的地址访问主调函数中的实参变量。正因为如此,被调函数对形参做的任何 操作都影响了主调函数中的实参变量。
作为函数的传递:
#include "stdafx.h"
#include "iostream"
using namespace std;
float MF1 (float x,float b1,float b2,float b3,float b4,float c)//测试的隶属函数
{
if(x <=c)
{
return b1*(x-b2);
}
else
{
return b3*(b4-x);
}
}
float integral(float(*fun)(float x,float b1,float b2,float b3,float b4,float c),float a,float b,int n)
{
float s;
float h;
float y;
int i;
s=(fun(a,2,3,4,5,6)+fun(b,1,3,4,5,6))/2; /*区间段上函数值评均*/
h=(b-a)/n; /*积分步长*/
for(i=1;i <n;i++)
{
s=s+fun(a+i*h,2,3,4,5,6); /*分段叠加*/
y=s*h;
}
return y;/*返回积分值*/
}
int sum(int a , int b)
{
return a+b;
}
int TotalSum(int(*fun)(int a, int b),int c, int d)
{
return fun(2,3)+c+d;
}
void main()
{
//float y= integral(MF1,100,20,1000);
int y=TotalSum(sum,4,5);
cout<<y;
cin>>y;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题。基本的参数传递机制有两种:值传递和引用传递。以下讨论称调用其他函数的函数为主调函数,被调用的函数为被调函数。
值传递(passl-by-value)过程中,被调函数的形式参数作为被调函数的局部变量处理,即在堆栈中开辟了内存空间以存放由主调函数放进来的实
参的值,从而成为了实参的一个副本。值传递的特点是被调函数对形式参数的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值。
引
用传递(pass-by-reference)过程中,被调函数的形式参数虽然也作为局部变量在堆栈中开辟了内存空间,但是这时存放的是由主调函数放进来
的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过堆栈中存放的地址访问主调函数中的实参变量。正因为如此,被调函数对形参做的任何
操作都影响了主调函数中的实参变量。
作为函数的传递:
#include
"stdafx.h"
#include
"iostream"
using
namespace
std;
float
MF1
(float
x,float
b1,float
b2,float
b3,float
b4,float
c)//测试的隶属函数
{
if(x
<=c)
{
return
b1*(x-b2);
}
else
{
return
b3*(b4-x);
}
}
float
integral(float(*fun)(float
x,float
b1,float
b2,float
b3,float
b4,float
c),float
a,float
b,int
n)
{
float
s;
float
h;
float
y;
int
i;
s=(fun(a,2,3,4,5,6)+fun(b,1,3,4,5,6))/2;
/*区间段上函数值评均*/
h=(b-a)/n;
/*积分步长*/
for(i=1;i
<n;i++)
{
s=s+fun(a+i*h,2,3,4,5,6);
/*分段叠加*/
y=s*h;
}
return
y;/*返回积分值*/
}
int
sum(int
a
,
int
b)
{
return
a+b;
}
int
TotalSum(int(*fun)(int
a,
int
b),int
c,
int
d)
{
return
fun(2,3)+c+d;
}
void
main()
{
//float
y=
integral(MF1,100,20,1000);
int
y=TotalSum(sum,4,5);
cout<<y;
cin>>y;
}
值传递(passl-by-value)过程中,被调函数的形式参数作为被调函数的局部变量处理,即在堆栈中开辟了内存空间以存放由主调函数放进来的实
参的值,从而成为了实参的一个副本。值传递的特点是被调函数对形式参数的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值。
引
用传递(pass-by-reference)过程中,被调函数的形式参数虽然也作为局部变量在堆栈中开辟了内存空间,但是这时存放的是由主调函数放进来
的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过堆栈中存放的地址访问主调函数中的实参变量。正因为如此,被调函数对形参做的任何
操作都影响了主调函数中的实参变量。
作为函数的传递:
#include
"stdafx.h"
#include
"iostream"
using
namespace
std;
float
MF1
(float
x,float
b1,float
b2,float
b3,float
b4,float
c)//测试的隶属函数
{
if(x
<=c)
{
return
b1*(x-b2);
}
else
{
return
b3*(b4-x);
}
}
float
integral(float(*fun)(float
x,float
b1,float
b2,float
b3,float
b4,float
c),float
a,float
b,int
n)
{
float
s;
float
h;
float
y;
int
i;
s=(fun(a,2,3,4,5,6)+fun(b,1,3,4,5,6))/2;
/*区间段上函数值评均*/
h=(b-a)/n;
/*积分步长*/
for(i=1;i
<n;i++)
{
s=s+fun(a+i*h,2,3,4,5,6);
/*分段叠加*/
y=s*h;
}
return
y;/*返回积分值*/
}
int
sum(int
a
,
int
b)
{
return
a+b;
}
int
TotalSum(int(*fun)(int
a,
int
b),int
c,
int
d)
{
return
fun(2,3)+c+d;
}
void
main()
{
//float
y=
integral(MF1,100,20,1000);
int
y=TotalSum(sum,4,5);
cout<<y;
cin>>y;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不清楚你是不是学计算机的 不过这个问题书中说的都很清楚。
你看 一个参数的定义分为
返回类型 函数名(参数)
像主函数
int main() 这种属于无参的 就是没有参数
像math.h里的sqrt
double sqrt(double d) 这个函数就是有参数的 要传入一个浮点型
当你调用它的时候填写的变量或者值
这个就叫传参 这是值传递 就是说传递的是值
好吧 我确实说的不清楚 不过这个术语在书中说的很清楚 水平肯定是比我高的
我建议你对不会的地方直接看书 不然就会像这样。。。。。几乎没人回答
你看 一个参数的定义分为
返回类型 函数名(参数)
像主函数
int main() 这种属于无参的 就是没有参数
像math.h里的sqrt
double sqrt(double d) 这个函数就是有参数的 要传入一个浮点型
当你调用它的时候填写的变量或者值
这个就叫传参 这是值传递 就是说传递的是值
好吧 我确实说的不清楚 不过这个术语在书中说的很清楚 水平肯定是比我高的
我建议你对不会的地方直接看书 不然就会像这样。。。。。几乎没人回答
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询