星沙网站建设,网页设计心得300,百度网站建设及推广,云南省住房和建设执业资格注册中心网站目录
形参#xff08;形式参数#xff09;#xff1a;
实参#xff08;实际参数#xff09;#xff1a;
形参和实参的区别和联系
具体实例: 当我们谈论形参和实参时#xff0c;可以用以下类比来解释它们之间的关系#xff1a;
形参…目录
形参形式参数
实参实际参数
形参和实参的区别和联系
具体实例: 当我们谈论形参和实参时可以用以下类比来解释它们之间的关系
形参就像是一个空杯子而实参就是要倒进这个杯子里的水。
形参形式参数 -在函数定义中出现的参数可以看做是一个站位符它没有数据只能等到函数被调用时接受传递来的数据所以简称形式参数简称形参 -形参就像是函数或方法定义中声明的空杯子它们用来接收传递给函数或方法的值。 -形参只有在函数或方法被定义时才存在并且没有具体的值就像空杯子一样等待被填充。 实参实际参数 -函数被调用时给出的参数包含了实实在在的数据会被函数内部的代码使用所以简称实际参数简称实参 -实参就像是要被倒入空杯子的水它们是实际传递给函数或方法的具体值。 -实参是调用函数或方法时提供的实际数据它们会被传递给形参并填充到空杯子里。 -形参和实参的功能是传递数据发生函数调用的时实参的值会传递给形参 换句话说形参是函数或方法定义中的占位符而实参是在调用函数或方法时提供给形参的具体值。
举个简单的例子假设我们有一个函数用来打印一个人的名字
void PrintName(string name) // 这里的name就是形参就像一个空杯子
{Console.WriteLine($Hello, {name}!);
}PrintName(Alice); // 在调用函数时传递的Alice就是实参就像要被倒入空杯子的水
在这个例子中函数 PrintName 中的 name 就是形参它等待被实参填充。而在调用函数时我们提供了实参 Alice它被传递给形参 name 并填充到函数中。
形参和实参的区别和联系 1) 形参变量只有在函数被调用时才会分配内存调用结束后立刻释放内存所以形参变量只有在函数内部有效不能在函数外部使用。 2) 实参可以是常量、变量、表达式、函数等无论实参是何种类型的数据在进行函数调用时它们都必须有确定的值以便把这些值传送给形参所以应该提前用赋值、输入等办法使实参获得确定值。 3) 实参和形参在数量上、类型上、顺序上必须严格一致否则会发生“类型不匹配”的错误。当然如果能够进行自动类型转换或者进行了强制类型转换那么实参类型也可以不同于形参类型。 4) 函数调用中发生的数据传递是单向的只能把实参的值传递给形参而不能把形参的值反向地传递给实参换句话说一旦完成数据的传递实参和形参就再也没有瓜葛了所以在函数调用过程中形参的值发生改变并不会影响实参。 因此形参和实参之间的实际区别在于形参是函数或方法定义中的占位符而实参是在调用函数或方法时提供给形参的具体值。 具体实例:
#include stdio.h//计算从m加到n的值
int sum(int m, int n) {int i;for (i m1; i n; i) {m i;}return m;
}int main() {int a, b, total;printf(Input two numbers: );scanf(%d %d, a, b);total sum(a, b);printf(a%d, b%d\n, a, b);printf(total%d\n, total);return 0;
}
运行结果 Input two numbers: 1 100↙ a1, b100 total5050 在这段代码中函数定义处的 m、n 是形参函数调用处的 a、b 是实参。通过 scanf() 可以读取用户输入的数据并赋值给 a、b在调用 sum() 函数时这份数据会传递给形参 m、n。 从运行情况看输入 a 值为 1即实参 a 的值为 1把这个值传递给函数 sum() 后形参 m 的初始值也为 1在函数执行过程中形参 m 的值变为 5050。函数运行结束后输出实参 a 的值仍为 1可见实参的值不会随形参的变化而变化。 以上调用 sum() 时是将变量作为函数实参除此以外你也可以将常量、表达式、函数返回值作为实参如下所示
total sum(10, 98); //将常量作为实参
total sum(a10, b-3); //将表达式作为实参
total sum( pow(2,2), abs(-100) ); //将函数返回值作为实参
5) 形参和实参虽然可以同名但它们之间是相互独立的互不影响因为实参在函数外部有效而形参在函数内部有效。 更改上面的代码让实参和形参同名
#include stdio.h//计算从m加到n的值
int sum(int m, int n) {int i;for (i m 1; i n; i) {m i;}return m;
}int main() {int m, n, total;printf(Input two numbers: );scanf(%d %d, m, n);total sum(m, n);printf(m%d, n%d\n, m, n);printf(total%d\n, total);return 0;
}
运行结果 Input two numbers: 1 100 m1, n100 total5050 调用 sum() 函数后函数内部的形参 m 的值已经发生了变化而函数外部的实参 m 的值依然保持不变可见它们是相互独立的两个变量除了传递参数的一瞬间其它时候是没有瓜葛的。