c++ 函数指针为实参
时间: 2024-01-28 13:13:13 浏览: 42
函数指针可以作为C++函数的实参,通过函数指针可以实现函数的回调和动态调用。下面是一个使用函数指针作为实参的示例:
```cpp
#include <iostream>
void func1() {
std::cout << "This is function 1" << std::endl;
}
void func2() {
std::cout << "This is function 2" << std::endl;
}
void callFunc(void (*func)()) {
func(); // 调用传入的函数指针所指向的函数
}
int main() {
callFunc(func1); // 输出:This is function 1
callFunc(func2); // 输出:This is function 2
return 0;
}
```
在上面的示例中,我们定义了两个函数`func1`和`func2`,然后定义了一个名为`callFunc`的函数,该函数的参数是一个函数指针`void (*func)()`。在`main`函数中,我们通过调用`callFunc`函数,并将`func1`和`func2`作为实参传入,从而实现了函数的回调。
相关问题
c++1.用数组作为函数形参实现函数,函数调用时实参为数组。 2.用数组作为函数形参实现函数,函数调用时实参为指针。 3.用指针作为函数形参实现函数,函数调用时实参为数组。 用指针作为函数形参实现函数,函数调用时实参为指针。
1. 用数组作为函数形参实现函数,函数调用时实参为数组:
```c
void func(int arr[], int len) {
// 函数体
}
int main() {
int arr[5] = {1, 2, 3, 4, 5};
func(arr, 5);
return 0;
}
```
2. 用数组作为函数形参实现函数,函数调用时实参为指针:
```c
void func(int *arr, int len) {
// 函数体
}
int main() {
int arr[5] = {1, 2, 3, 4, 5};
func(arr, 5);
return 0;
}
```
3. 用指针作为函数形参实现函数,函数调用时实参为数组:
```c
void func(int *arr, int len) {
// 函数体
}
int main() {
int arr[5] = {1, 2, 3, 4, 5};
func(&arr[0], 5);
return 0;
}
```
4. 用指针作为函数形参实现函数,函数调用时实参为指针:
```c
void func(int *arr, int len) {
// 函数体
}
int main() {
int arr[5] = {1, 2, 3, 4, 5};
func(arr, 5);
return 0;
}
```
结构体函数的实参为指针时形参怎么写
当结构体函数的实参为指针时,形参需要使用指针类型。例如,如果结构体定义如下:
```C++
struct Person {
int age;
char name[20];
};
```
那么如果要定义一个函数来修改结构体中的age成员变量,函数的定义可以如下:
```C++
void modify_age(Person* p, int new_age) {
p->age = new_age;
}
```
在这个函数中,形参p的类型是`Person*`,即指向Person类型的指针。可以通过`p->age`来访问结构体中的age成员变量。函数的调用可以如下:
```C++
Person p1;
p1.age = 20;
modify_age(&p1, 25); // 将p1的age成员变量修改为25
```