《C++PP》学习笔记5第七章函数

131 阅读1分钟

数组作为函数的参数输入时,视为数组首地址即第一个成员的地址

接受数组名参数的函数访问的是原始数组,而不是其副本。

如果不想修改数组可以使用const保护,例如:const int ar[]

指针和const

const int *pt; pt指向一个const int 所以不能通过pt修改他,可以将新地址赋值给pt。

可以将const变量的地址赋值给const的指针,但是不能将const的地址赋值给普通指针。

int * const pt = &sloth; pt只能指向sloth,但是可以修改他的值。

函数指针

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

const double * f2(const double [] , int);

const double * f3(const double * , int);

这三种等价

声明一个指针指向这三个函数之一:const double * (*p1)(const double *, int) = f1;

注意区分:*pd[3]一个包含3个指针的数组

(*pd)[3]一个指针指向一个包含3个元素的数组

auto pb = pa;

auto pc = &pa;

则pc任何操作都要比pb多一次解引用

使用typedef可以简化操作,例如:typedef const double * (*p_fum)(const double * , int);

p_fum pa[3] = {f1,f2,f3};

p_fum (*pa)[3] = &pa;