c语言函数形参和实参
时间: 2023-08-09 07:04:53 浏览: 178
在C语言中,函数的形参是指在函数定义中声明的参数,而实参则是在函数调用时传递给函数的值或变量。
函数定义的一般形式为:
```
return_type function_name(parameter_list) {
// function code
}
```
其中,`parameter_list` 指的就是函数的形参列表,可以包含多个参数,每个参数由参数类型和参数名组成。例如:
```
int add(int a, int b) {
return a + b;
}
```
在这个函数中,`a` 和 `b` 就是形参,它们的类型都是 `int`。
当我们调用这个函数时,需要传递实参,实参的值会被赋值给函数中的形参。例如:
```
int sum = add(2, 3);
```
在这个例子中,`2` 和 `3` 就是实参,它们的值会分别赋值给 `a` 和 `b`。
需要注意的是,实参可以是常量、变量、表达式或函数调用的返回值,但它们的类型必须与形参的类型匹配,否则会导致编译错误或运行时错误。
相关问题
c语言中形参和实参类型不匹配错误的修改例子
在C语言中,形参(函数参数)和实参(实际传递给函数的数据)的类型必须匹配,否则编译器会报错。例如,如果声明了一个需要整数参数的函数,而尝试传入一个浮点数,就会出现类型不匹配的错误。修正这种情况通常有以下几种方式:
1. **显式类型转换**:
如果你知道如何将实参转换为所需的类型,可以在调用函数前将其转换。例如:
```c
void printInt(int num) {
printf("Number: %d\n", num);
}
int main() {
float f = 4.5;
int i = (int)f; // 显式类型转换
printInt(i); // 正确调用
return 0;
}
```
2. **改变函数参数类型**:
如果可以接受多种类型的参数,可以将函数改为能处理这些类型。如使用`void *`作为通用指针。
```c
#include <stdio.h>
#include <stdlib.h>
void printValue(void *value) {
if(value != NULL) {
printf("Value: %lf\n", *(float*)value); // 假设value是float类型
} else {
printf("Value is null.\n");
}
}
int main() {
float f = 4.5f;
printValue(&f); // 直接传入float地址
return 0;
}
```
在这个例子中,虽然函数内部处理的是`float`类型,但是传递的是`void *`,避免了硬编码特定类型。
C语言区分形参与实参,并例子
在C语言中,形参和实参是两个不同的概念。
形参是函数定义时所声明的参数,用于接收函数调用时传递进来的实参值。形参在函数体内部可以像普通变量一样使用。
例如,下面的函数定义中的a和b就是形参:
```c
int add(int a, int b) {
return a + b;
}
```
实参是函数调用时传递给函数的值。实参可以是常量、变量、表达式或函数等。
例如,下面的函数调用中的2和3就是实参:
```c
int sum = add(2, 3);
```
在调用函数时,实参会按照声明的顺序依次传递给函数的形参。
例如,下面的函数调用中,2会赋值给a,3会赋值给b:
```c
int sum = add(2, 3);
```
需要注意的是,形参和实参的名称可以不相同,但是它们的类型和数量必须匹配。否则会导致编译错误。
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pptx](https://img-home.csdnimg.cn/images/20241231044947.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)