C++之函数指针&指针函数
指针函数
- 指针函数:返回值是指针的函数。
# 形式如下
类型名 *函数名(函数参数列表)
# 示例代码
// 由于“*”的优先级低于“()”的优先级,因而swap首先和后面的“()”结合,也就意味着,swap是一个函数 char *swap(char *a, char *b) 等价于 char *(swap(char *a, char *b))
// 返回值是一个指针地址。
#include <stdio.h>
char *swap(char *a, char *b){
b = a;
return b;
}
int main(int argc, char *argv[]) {
char a[10] = "hello";
char b[10] = "world";
printf("%s", swap(a, b));
return 0;
}
函数指针
- 函数指针:指向函数的指针。
#include <stdio.h>
void say_hello(const char *str)
{
printf("Hello %s\n", str);
}
int main(void)
{
void (*f)(const char *) = say_hello;
f("Guys");
return 0;
}
# 变量f的类型声明void (*f)(const char *),f首先跟*号结合在一起,因此是一个指针。(*f)外面是一个函数原型的格式,参数是const char *,返回值是void,所以f是指向这种函数的指针。而say_hello的参数是const char *,返回值是void,正好是这种函数,因此f可以指向say_hello。
参考文章
函数指针与指针函数
函数类型和函数指针类型