一、指针函数
定义:
指针函数就是返回值类型是指针的函数(后面说的是本身是什么,前面说的是返回值类型是什么)
声明方法:
类型标识符 函数名(参数列表)
int* fun(int x, int y);
int * fun(int x, int y);
int *fun(int x, int y);
使用示例:
#include<iostream>
using namespace std;
struct MyStruct
{
int a, b;
};
MyStruct* fun(int x, int y)
{
MyStruct* st = new MyStruct;
st->a = x;
st->b = y;
return st;
}
int main()
{
MyStruct* myData = fun(3, 4);
cout << myData->a << myData->b;//打印值
return 0;
}
二、函数指针
定义:
函数指针首先是一个指针,指向的内容是什么呢,指向的是一个函数,返回值类型是指向函数的返回值类型
声明方法:
类型标识符 (*函数名)(参数列表)
int (*fun)(int x, int y);//此处fun是指针名
fun 函数指针类型别名
typedef int (*fun)(int,int);//此处fun是类型别名
使用示例:
struct MyStruct
{
int a, b;
};
MyStruct my_max(int x, int y)//被指向的函数
{
MyStruct st;
st.a = x;
st.b = y;
return st;
}
MyStruct(*fun)(int x, int y);//声明一个函数指针
int main()
{
//两种方法指向函数
fun = my_max;
cout << (*fun)(5, 3).a << (*fun)(5, 3).b << endl;
fun = &my_max;
cout << fun(5,1).a << (*fun)(5,1).b << endl;
return 0;
}
struct MyStruct
{
int a, b;
};
MyStruct my_max(int x, int y)
{
MyStruct st;
st.a = x;
st.b = y;
return st;
}
typedef MyStruct (*fun)(int,int);
int main()
{
fun p = my_max;
cout << (*p)(5, 3).a << (*p)(5, 3).b << endl;
p = &my_max;
cout << p(5,1).a << p(5,1).b << endl;
return 0;
}