举例说明形参和实参的区别
时间: 2023-08-10 09:07:42 浏览: 112
当我们定义一个函数时,可以在函数的括号内声明一个或多个形参。形参是函数内部使用的变量。
例如,下面是一个计算两个数之和的函数:
```
def add_numbers(a, b):
sum = a + b
return sum
```
在这个函数中,`a` 和 `b` 就是形参。它们在函数定义时被声明,用于接收函数调用时传递的实参。
现在,我们可以调用这个函数并传递实参给它:
```
result = add_numbers(2, 3)
print(result)
```
在这个例子中,`2` 和 `3` 是实参。它们在函数调用时传递给函数,并且被赋值给形参 `a` 和 `b`。函数执行后,返回了两个数的和,并将其赋值给变量 `result`。最后,我们打印出结果 `5`。
所以,形参是在函数定义时声明的变量,用于接收函数调用时传递的值;而实参是函数调用时传递给函数的值。
相关问题
请用代码举例说明 代码中形参和实参的区别
好的,下面我将用一个简单的示例代码来说明函数中形参和实参的区别。
```c
#include <stdio.h>
void swap(int a, int b) {
int temp = a;
a = b;
b = temp;
}
int main() {
int x = 1, y = 2;
swap(x, y);
printf("x=%d, y=%d\n", x, y);
return 0;
}
```
在上面的示例代码中,我们定义了一个`swap`函数,用于交换两个整数的值。函数中有两个形参`a`和`b`,表示需要交换的两个整数。在`main`函数中,我们定义了两个变量`x`和`y`,并将它们的值分别初始化为1和2。随后,我们调用`swap`函数,将`x`和`y`作为实参传入函数中。
然而,由于形参在函数调用时是被拷贝的,因此在函数中对形参的修改不会影响实参。换言之,函数`swap`中对形参`a`和`b`的交换操作并不会对`x`和`y`的值产生影响。因此,最终输出的结果为:
```
x=1, y=2
```
可以看到,`x`和`y`的值并没有被交换。
如果我们想要在函数中修改实参的值,我们可以将实参的地址作为形参传入函数中,然后通过指针间接修改实参的值。修改后的代码如下:
```c
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int x = 1, y = 2;
swap(&x, &y);
printf("x=%d, y=%d\n", x, y);
return 0;
}
```
在修改后的代码中,`swap`函数的形参变为指向整数的指针`int *`类型,即`a`和`b`分别指向`x`和`y`的地址。在函数中,我们通过指针间接修改`x`和`y`的值。最终输出的结果为:
```
x=2, y=1
```
可以看到,`x`和`y`的值已经被成功地交换了。
形参和实参,举例说明
形参和实参是函数定义中的概念,用于描述函数调用时数据的传递方式。形参是在函数声明中定义的,它们是函数内部的局部变量,而实参则是实际调用函数时提供的参数。
**形参示例**[^1]:
```cpp
void find(int &x) {
x = 10; // 这里形参x被赋值
}
int main() {
int z = 5;
find(z); // 实参z的地址传递给形参x
cout << "z after function call: " << z << endl; // 输出:z = 10, 形参改变了实参的值
return 0;
}
```
在这个例子中,`find`函数接受一个整数引用作为形参,这意味着它可以直接修改实参`z`的值。
**实参示例**[^2]:
```java
public void display(String message) { // 函数定义,message是形参
System.out.println("Message from the function: " + message);
}
public static void main(String[] args) {
String input = "Hello, World!"; // 实参
display(input); // 主调函数传递输入到display函数
}
```
这里,`display`函数接收一个字符串作为实参`message`,主程序中的`input`变量的值被复制给`message`,但`input`本身不会受到影响。
总结来说,形参是函数内部的存储位置,实参则是调用函数时传递的实际值。形参通过引用传递可以影响实参,而实参通常是值传递,不会直接更改原值。
阅读全文