函数指针

xiaoxiao2025-10-08  14

下面是一些函数的原型,这些函数的特征标看似不同,但实际上相同。

const double * f1(const double a[], int n); const double * f1(const double [], int n); const double * f1(const double *, int n);

首先参数列表const double a[]与const double *a的含义完全相同,其次,在函数原型中可以省略标识符,(定义函数的时候不可省略标识符)。因此三者相同。

如何声明一个函数指针?

只需将目标函数原型中的函数名替换成(*func) 即可。 const double * (*func)(const double a[], int n); 初始化:func=f1;

更加复杂的函数声明

函数指针数组 const double * (*func[3])(const double a[], int n);

指向函数指针数组的指针 const double * (*(func)[3])(const double a[], int n); 上式就是 const double * (((*func)[3]))(const double a[], int n);其中(*func)[3])是一个指向一个含有三个元素的数组的指针,外面加一个星号表示为函数指针。

声明函数指针的类型是括号里面的内容,括号外面的星号是函数的返回值得类型

使用typedef typedef const double * (*func)(const double a[], int n); 则可用func来初始化 func=pa[3]; 函数指针数组 func=(*pa)[3]; 指向函数指针数组的指针

用typedef来声明函数指针可以看做就是用pa[3]来替换func,同样(*pa)[3]来替换func。

转载请注明原文地址: https://www.6miu.com/read-5037536.html

最新回复(0)