函数的指针和指向函数的指针变量
函数在内存中有地址,通过定义指向函数的指针变量,并建立相应的指向关系后,运用指针访问函数。
函数指针变量的定义与使用
-
函数源代码在内存中的第一条指令的存放地址,称为函数的入口地址。这个入口地址就称为该函数的指针。
-
一维数组名代表一维数组第一个元素的内存地址,同理,函数名就是函数源代码在内存中的起始地址。
-
指向函数的指针变量定义的一般形式为
数据类型(* 指向函数指针变量名)(形式参数表)
类型为所指向函数的返回值类型,形参表给出函数指针变量所指向的函数的形参信息
函数指针的赋值
指针变量=函数名;
通过指针变量调用函数的一般形式:
(*指针变量名)(实参表)
另外,函数指针变量可作函数的参数.
指针型函数
若函数的返回值是地址,则称此函数是指针型函数,即返回指针的函数。
指针型函数定义的一般形式:
数据类型 *函数名(形参表)
{
局部变量定义;
语句;
}
int *p()与int ( * p)() 的区别?
int *p是返回值为指针的函数;int ( *p)()是指向函数的指针
C语言函数只允许返回全局变量指针、静态变量指针、堆内空间地址,不允许把函数内部定义的局部变量指针作为返回值。
指针数组和指向指针的指针
指针数组:由若干基类型相同的指针变量所构成的数组,即数组元素为指向同一类型数据的指针变量的集合。 指针数组落到数组上是数组。
指针数组定义的一般形式:数据类型 *数组名[数组长度]
运算符 "[ ]“比” * "的优先级高
在处理一些字符串问题时,由于交换地址比交换字符串中的字符所费的时间少,所以用指针数组更方便。