只有数组名和函数名才表示地址,所以表示数组和函数的地址时不能加&
【指针常量】:该指针是一个常量,必须初始化,即指针指向某个变量或对象后,指针的值不能改变,不能再让其指向其他变量,但是要注意,该指针只能指向变量,因为常量只能用指向常量的指针指向,既用常量指针,且,改变量的值可以随时改变(保护指针的值不被修改)
type * const ptr
【常量指针】:指向常量的指针,即该指针只能指向常量数据类型(如果指向变量数据类型呢?可以指向变量类型,但不能通过指针修改该变量,变量本身还是变量性质,只不过对于该变量的指针来说,该变量被赋予常量性质了),通过指针间接引用该常量是,只能读,不能表达修改含义,但该指针是一个指针变量,可以再指向其他常量数据类型。(保护原函数的数据不被修改)
const type * ptr
【常量指针常量】:指向常量数据的常量类型的指针,即该指针指向常量数据(是否可以指向变量类型数据?也是可以的,性质和常量指针一样!),不能间接引用时修改该常量的内容,且,该指针本身是一个指针常量,必须初始化,初始化后该指针不能再指向其他对象。(保护指针值和数据本身)
const type * const ptr
【常引用】:```const type & rname = name``(假设int name = 3),表示对rname来说name是常量,尽管它可以不是,name本身的用法不受影响,所以不能再通过rname改变name的值,但name的值的改变rname的值也随之改变。
【指针函数】:函数的返回值 是 指针数据类型 的函数,指针函数不能把在它内部说明的具有局部作用域的数据地址作为返回值,可以返回堆地址、全局或静态变量的地址。
type * func(函数参数)
【函数指针】:指向函数地址的指针,即该指针变量指向的数据类型是在代码区中的某一函数,函数名即为整个函数的地址,通过指针可以调用相应的函数
定义:int (*ptr) (函数参数) 其中函数参数和int共同决定了指针ptr所能指向的函数类型,函数参数和int属于函数部分。
其调用函数的形式有两种:
①在C语言中:(*ptr)(实参);
②在C++中:(