1.函数指针
const double *f1(const double ar[], int n);//1
const double *f2(const double [], int);//2
const double *f3(const *, int);//3
看第一个的参数const double ar[],应该了解它和const double *ar是完全相同的;
其次,函数原型中标识符可以省略,const double ar[]就是const double [],
const double *ar 就是const double *;
看上面三个函数原型,可以说它们的意义是完全相同的。
另外,函数定义和函数原型声明不同,定义是都要有的。
运算符[]的优先级高于 * 嗷。
最后提一嘴,auto,自动类型推断,其确保变量的类型与赋给它的初值的类型一致,但我们提供的初值的类型可能是错误的。
auto pc = *pa;
2.typedef进行简化
1.创建类型别名
typedef unsigned short uint16_t;
2.将别名当作标识符进行声明
typedef const double *(*p_fun)(const double *, int);
p_fun p1 = f1;
3.内联函数
占用内存更大,运行速度更快。我们所写的常规函数,调用的时候都是跳转到函数的地方去执行,内联函数有点类似直接把函数写在需要调用的地方,每个需要调用的地方都写,而不是封装成函数进行调用。
1.在函数声明前加上关键字inline;
2.在函数定义前加上关键字inline;
通常的做法是,省略原型,将整个定义写在原本放原型的地方(也就是主函数之前)。