形参和实参的区别

您所在的位置:网站首页 c语言中的实参和形参的区别是什么 形参和实参的区别

形参和实参的区别

2024-07-14 01:11| 来源: 网络整理| 查看: 265

最近在做题的时候被问到了形参和实参的区别,所以在这具体解释一下。

首先什么是形参?什么是实参?

形参(形式参数)

在函数定义中出现的参数可以看做是一个占位符,它没有数据,只能等到函数被调用时接收传递进来的数据,所以称为形式参数,简称形参。

实参(实际参数)

函数被调用时给出的参数包含了实实在在的数据,会被函数内部的代码使用,所以称为实际参数,简称实参。

形参和实参的功能是传递数据,发生函数调用时,实参的值会传递给形参。

形参和实参的区别和联系

形参变量只有在函数被调用时才会分配内存,调用结束后,立刻释放内存,所以形参变量只有在函数内部有效,不能在函数外部使用。

实参可以是常量、变量、表达式、函数等,无论实参是何种类型的数据,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参,所以应该提前用赋值、输入等办法使实参获得确定值。

实参和形参在数量上、类型上、顺序上必须严格一致,否则会发生“类型不匹配”的错误。当然,如果能够进行自动类型转换,或者进行了强制类型转换,那么实参类型也可以不同于形参类型。

函数调用中发生的数据传递是单向的,只能把实参的值传递给形参,而不能把形参的值反向地传递给实参;换句话说,一旦完成数据的传递,实参和形参就再也没有瓜葛了,所以,在函数调用过程中,形参的值发生改变并不会影响实参。

接下来看几个例子:

#include void swap(int a, int b);//函数声明 int main() { int x = 7, y = 11; printf("实参x、y的初值为:x=%d y=%d\n\n", x, y); swap(x, y);//调用时把下实参x,y的值传递给形参a,b printf("实参x、y交换后的值为:x=%d y=%d\n\n", x, y); //printf("x、y交换后的值为:x=%d y=%d\n\n", a, b);//报错,因为形参只能在调用函数范围内使用,不能再函数外部使用 return 0; } //函数定义,这里括号中的a和b就是形参 void swap(int a, int b) { int temp; temp = a; a = b; b = temp; printf("形参a=%d 形参b=%d\n\n", a, b); }

输出结果如下:

在这里插入图片描述

这个例子说明了实参只是向形参传递其本身的数值,形参变量只是在void swap()这个函数里有效,调用这个函数结束后会立即释放内存,同时形参的值改变不会影响实参。

而且!!!

形参和实参可以同名!!!,因为它们之间是相互独立的,互不影响,因为实参在函数外部有效,而形参在函数内部有效。所以这个更能说明形参的改变影响不了实参的值。

同样上面的例子

#include void swap(int x, int y);//函数声明 int main() { int x = 7, y = 11; printf("实参x、y的初值为:x=%d y=%d\n\n", x, y); swap(x, y);//调用时把下实参x,y的值传递给形参a,b printf("实参x、y交换后的值为:x=%d y=%d\n\n", x, y); //printf("x、y交换后的值为:x=%d y=%d\n\n", x, y);//不报错,但这里输出的还是实参的值 return 0; } //函数定义,这里括号中的a和b就是形参 void swap(int x, int y) { int temp; temp = x; x = y; y = temp; printf("形参x=%d 形参y=%d\n\n", x, y); }

在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3