C\C++学习笔记 3

时间:2023-03-09 20:07:19
C\C++学习笔记 3

C++记录7

函数指针: 函数名为地址, 地址指的是在机器指令存储的地址。

double func(int line)
{
reture line*3.5;
}

void f(int line, double (*pa)(int))
{
cout (*pa)(line);
}

f(5, func)

深入函数指针:

定义函数原型, 对于数组默认就是指针。
const double * f1(const double [], int)
const double * f2(const double *, int)
该函数返回值是指针。

int main()
{
double av[3] ={1,2,3}
const double * (*p1)(constdouble *,int)=f1
auto p2 = f2;

cout (*p1)(av,3) 返回地址, *(*p1)(av,3)返回值
cout p2(av,3) 返回地址, *p2(av,3)返回值

函数指针数组:
const double * (*pa[3])(const double *, int) = {f1, f2, f3}

auto pb = pa auto不能定义数组但可以初始化指针地址。

cout pa[1](av,2) 地址, *pa[1](av,2) 值
cout pb[1](av,2) 地址, *pb[1](av,2) 值

指针的指针
auto pd = &pa
const double * (*(*pc)[3])(const double *, int) = &pa

cout 地址为 *(*pc)[0])(av,2) *(*(*pc))[0](av,2)值

cout (*pd)[0](av,2) 为地址, *(*pd)[0](av,2)为值。

double const * f1(const double * ar, int n)
{
reture ar+n;
}

double const * f2(const double [] ar, int n)
{
reture ar+n;
}
}