函数调用中,实参为什么没有类型,而函数定义中形参前面要有类型
时间: 2024-04-19 14:30:37 浏览: 125
在函数调用中,实参没有类型是因为编译器在进行函数调用时,会根据函数的声明和定义来确定实参的类型。编译器会根据函数声明中的参数类型来推断实参的类型,并进行相应的类型转换。
而在函数定义中,形参前面要有类型是因为函数定义是函数的具体实现,编译器需要知道形参的类型来正确地分配内存和进行参数传递。函数定义提供了函数的实际代码,包括参数列表和返回值类型,因此需要明确指定形参的类型。
总结起来,函数调用中实参没有类型是因为编译器可以通过函数声明推断实参的类型,而函数定义中形参前面要有类型是为了让编译器知道如何正确处理这些参数。
相关问题
c++1.用数组作为函数形参实现函数,函数调用时实参为数组。 2.用数组作为函数形参实现函数,函数调用时实参为指针。 3.用指针作为函数形参实现函数,函数调用时实参为数组。 用指针作为函数形参实现函数,函数调用时实参为指针。
1. 用数组作为函数形参实现函数,函数调用时实参为数组:
```c
void func(int arr[], int size) {
// 函数体
}
int main() {
int arr[5] = {1, 2, 3, 4, 5};
func(arr, 5);
return 0;
}
```
2. 用数组作为函数形参实现函数,函数调用时实参为指针:
```c
void func(int *arr, int size) {
// 函数体
}
int main() {
int arr[5] = {1, 2, 3, 4, 5};
func(arr, 5);
return 0;
}
```
3. 用指针作为函数形参实现函数,函数调用时实参为数组:
```c
void func(int *arr, int size) {
// 函数体
}
int main() {
int arr[5] = {1, 2, 3, 4, 5};
func(&arr[0], 5);
return 0;
}
```
4. 用指针作为函数形参实现函数,函数调用时实参为指针:
```c
void func(int *arr, int size) {
// 函数体
}
int main() {
int arr[5] = {1, 2, 3, 4, 5};
func(arr, 5);
return 0;
}
```
注意,指针和数组在函数传参时有一些细微的差别,需要注意。
函数调用 实参初始化形参
函数调用是程序中一种常见的操作,它用于执行函数并传递参数。在函数调用过程中,实参(也称为实际参数)被传递给形参(也称为形式参数)。
函数调用的过程如下:
1. 首先,根据函数的定义,确定函数名和参数列表。
2. 在调用函数时,将实参传递给函数。实参可以是常量、变量、表达式或其他函数的返回值。
3. 在函数内部,形参接收实参的值。形参是函数定义中声明的变量,用于接收传递进来的实参值。
4. 函数体内部执行相应的操作,使用形参进行计算或处理。
5. 函数执行完毕后,返回结果(如果有)。
在函数调用过程中,实参的初始化是指将实参的值传递给形参的过程。实参可以通过值传递、引用传递或指针传递来初始化形参。
- 值传递:实参的值被复制到形参中,形参在函数内部使用时不会影响实参的值。
- 引用传递:通过使用引用作为形参,可以直接操作实参的值,对形参的修改会影响到实参。
- 指针传递:通过使用指针作为形参,可以通过指针间接地修改实参的值。
阅读全文