目录
一、指针函数
指针函数顾名思义是一个函数,函数返回值是一个指针或地址。
声明格式:
类型说明符 *函数名(参数)
例如:
int *pa(int,int);
例1:
定义一个指针函数用于返回一个字符串,字符串就是指向字符的指针。主函数中调用该函数获取指针然后打印其内容:
结果正常打印输出。
注意不要返回局部变量的指针:
例2:
将指针函数修改一下,其他不变。
编译时出现警告:函数返回的地址是局部变量。
运行时也没有输出。
这是因为局部变量只在该函数内有效,出了函数就无效了。那例1中为什么可以呢,因为例1返回的是字符串,在C语言中字符是在某一固定存储区保存的,不属于局部变量。而例2定义了数组存放字符串,数组属于局部变量,返回的是数组的地址,所以就会出错。
二、函数指针
函数指针是指针,是指向函数的指针。声明格式:
类型说明符 (*指针变量名)(参数)
这里类型说明符要与被指函数的相同,后面的参数格式也必须与被指函数的参数格式相同。
声明例如:
void (*pa)(int,int);
两种赋值方式:(func(int,int)为函数名)
Pa = &func(int,int);
Pa = func(int,int);
例:
用指针pa指向add()函数,通过pa调用add()函数。