写一个函数指针实现字符串反转
时间: 2023-07-18 11:38:06 浏览: 131
好的,以下是一个使用函数指针实现字符串反转的示例代码:
```c
#include <stdio.h>
#include <string.h>
// 定义一个函数指针类型,用于指向函数
typedef char *(*ReverseFunc)(char *);
// 定义一个函数,用于反转字符串
char *reverse(char *str) {
int len = strlen(str);
char *p = str, *q = str + len - 1;
while (p < q) {
char tmp = *p;
*p++ = *q;
*q-- = tmp;
}
return str;
}
// 定义一个函数,用于执行反转字符串的函数指针
void reverseString(char *str, ReverseFunc func) {
char *result = func(str);
printf("反转后的字符串为:%s\n", result);
}
int main() {
char str[] = "hello world";
// 将函数名作为参数传递,获取函数指针
ReverseFunc func = &reverse;
// 执行函数指针
reverseString(str, func);
return 0;
}
```
运行结果:
```
反转后的字符串为:dlrow olleh
```
在上面的示例代码中,我们首先定义了一个函数指针类型`ReverseFunc`,用于指向返回值为`char *`类型、参数为`char *`类型的函数。
然后,我们定义了一个`reverse()`函数,用于实现字符串反转操作,并返回反转后的字符串指针。
接着,我们定义了一个`reverseString()`函数,该函数接受一个字符串和一个函数指针作为参数,用于执行函数指针并输出结果。
最后,我们在`main()`函数中定义了一个字符串`str`,并将`reverse()`函数的函数名作为参数传递给`reverseString()`函数,获取相应的函数指针。然后,我们使用`reverseString()`函数执行该函数指针,并输出反转后的字符串。
阅读全文