形参和实参的区别 c
时间: 2024-10-21 09:07:42 浏览: 53
形参(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
void printArray(int arr[]) {
// 函数内部对arr的操作会影响原始数组
for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++) {
printf("%d ", arr[i]);
}
}
int main() {
int myArray[] = {1, 2, 3, 4, 5};
printArray(myArray);
return 0;
}
```
在这个例子中,`printArray`函数通过`arr`访问到`myArray`数组的内容。当我们在`main`函数里调用`printArray(myArray)`时,实际上是把`myArray`的首地址传给了形参`arr`。
c 语言形参与实参
在C语言中,函数的参数分为形参和实参。
形参是在函数定义时声明的参数,用来接收函数调用时传递的实参值。形参的声明格式和变量的声明格式相同,例如:
```
void foo(int a, float b, char c);
```
在这个函数定义中,`a`、`b`和`c`就是形参。
实参是函数调用时传递给函数的值。实参可以是常量、变量、表达式或函数的返回值。例如:
```
int x = 10;
float y = 3.14;
char z = 'A';
foo(x, y, z);
```
在这个函数调用中,`x`、`y`和`z`就是实参。
当函数被调用时,实参的值被传递给对应的形参,函数就可以使用这些值来完成相应的操作。在函数内部,形参就像其他变量一样被使用。
需要注意的是,形参和实参的类型必须匹配,否则会出现编译错误。此外,在函数调用时,实参的数量也必须与函数定义中形参的数量相匹配。如果实参的数量不足或超过了形参的数量,也会出现编译错误。
阅读全文