形参和实参的区别 c
时间: 2024-10-21 17:07:42 浏览: 74
形参(Formal Parameters)和实参(Actual Arguments)是函数编程中两个关键的概念:
1. **形参**:在函数定义时声明的一组变量,用于接收调用该函数时传递的值。它们是函数内部的局部变量,与函数外部的变量无关。形参是用来描述函数期望如何接受输入的。
2. **实参**:当你实际调用函数时提供的值,它们会被赋给对应的形参。实参是你想要执行某个操作的具体数据。
例如,在C语言中:
```c
void printName(char name[]) {
printf("Your name is: %s", name);
}
int main() {
char yourName[] = "Alice";
printName(yourName); // 实参yourName对应形参name
return 0;
}
```
在这里,`printName`函数的形参`name`是一个字符数组,而`main`函数中`yourName`就是传入`printName`的实参。形参`name`在函数体内接收到字符串"Alice"的实际内容。
相关问题
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`变量。
在C语言中,如何理解函数的形参和实参的概念及其关系?
在C语言中,函数的形参和实参是函数调用过程中非常重要的两个概念。理解它们的关系有助于编写正确和高效的代码。
1. **形参(形式参数)**:
- 形参是在函数定义时声明的变量。它们是函数签名的一部分,用于接收传入函数的参数。
- 形参的作用域仅限于函数内部,函数调用结束后,形参所占用的内存空间会被释放。
2. **实参(实际参数)**:
- 实参是在函数调用时传递给函数的值或变量。实参可以是常量、变量或表达式。
- 实参的值在函数调用时会被复制一份传递给形参,因此函数内部对形参的修改不会影响到实参,除非传递的是指针。
**关系**:
- 形参和实参之间的关系是赋值关系。在函数调用时,实参的值会被赋值给形参。
- 形参和实参的类型和数量必须匹配,否则会导致编译错误或运行时错误。
**示例**:
```c
#include <stdio.h>
// 函数定义,形参为a和b
int add(int a, int b) {
return a + b;
}
int main() {
int x = 5;
int y = 10;
// 函数调用,实参为x和y
int result = add(x, y);
printf("The sum is: %d\n", result);
return 0;
}
```
在这个示例中,`add`函数的形参是`a`和`b`,而`main`函数中调用`add`时传递的实参是`x`和`y`。在函数调用时,`x`和`y`的值被复制给`a`和`b`。
阅读全文
相关推荐














