c 语言形参与实参重名
时间: 2024-01-23 10:13:54 浏览: 200
在C语言中,形参和实参可以重名。当函数被调用时,实参的值会被传递给形参,形参会在函数内部被当做变量来使用。如果形参和实参重名,那么在函数内部使用该变量时,会优先使用形参的值。例如:
```c
#include <stdio.h>
void func(int num) {
printf("形参num的值为:%d\n", num);
}
int main() {
int num = 10;
func(num); // 调用函数
return 0;
}
```
在上面的例子中,函数`func`的形参为`num`,在`main`函数中定义了一个变量`num`并将其值赋为10,然后调用`func`函数并将`num`作为实参传递给`func`函数。在`func`函数内部,使用`num`变量时会优先使用形参`num`的值,因此输出结果为“形参num的值为:10”。
相关问题
j ava形参实参
在Java中,形参指的是在方法签名中声明的变量,用于接收方法调用时传入的实参。实参则是在方法调用时传递给方法的值或变量。简单来说,形参是方法的参数列表中用于接收传入值的变量,而实参是传递给方法的具体值或变量。例如,下面的代码中,x和y是方法add的形参,而3和5是调用add方法时传递的实参:
```
public int add(int x, int y) {
return x + y;
}
int result = add(3, 5);
```
在方法调用时,3和5作为实参传递给方法,方法内部使用形参x和y来接收这两个实参的值,然后将它们相加并返回结果。
C语言传输改变形参改变实参
在C语言中,并不像高级语言那样支持直接通过引用(如指针或引用)修改函数传入的形参。当你将变量作为函数参数传递时,实际上是复制了一个副本。因此,如果你在函数内部改变了这个副本的值,原函数外部的变量并不会受到影响。
例如:
```c
void change_arg(int x) {
x = 10; // 这里改变了x的副本,不影响原始变量
}
int main() {
int num = 5;
change_arg(num);
printf("num = %d\n", num); // 输出:num = 5,未变
return 0;
}
```
如果你想在函数内部修改原值,你可以使用指针,让函数接收指向变量地址的指针:
```c
void change_ptr_to_arg(int *x) {
*x = 10; // 现在我们修改的是指针所指向的实际位置
}
int main() {
int num = 5;
change_ptr_to_arg(&num);
printf("num = %d\n", num); // 输出:num = 10,已变
return 0;
}
```
在这种情况下,`change_ptr_to_arg`函数通过指针可以直接操作`main`函数中的`num`变量。
阅读全文