一、函数指针
函数指针,函数的指针,也就说是一个指针,存放的是函数地址
1、如何定义一个函数指针呢?
a : 表示一个指针:*
b : 函数的标志:()
c : 函数指针是专用的,格式要求很强(参数类型,个数,返回值)
void (*p)() ;就定义了一个函数指针,void表示函数的返回类型,
2、如何给函数指针赋值呢?
p = add;就表示给函数指针p赋值了,add表示函数名,函数名就是地址,就像数组一样,数组名就是地址
3、如何通过函数指针调用函数?
a:p(); 直接通个指针名字加()调用
b:(*p)(); 取内容,(*函数指针名字)()
示例代码:
#include<stdio.h>
#include<stdlib.h>
void add(int a,int b)
{
int c;
c = a + b;
printf("c = %d\n",c);
}
int main()
{
//void (*p)();没有参数的函数指针
void (*p)(int a,int b); //定义一个函数指针 (相当于把函数原型void add(int a,int b)中的add改为(*p))
p = add; //给函数指针赋值,add相当于一个地址
// 调用函数
p(1,3);
(*p)(5,7);
system("pause");
return 0;
}
二、指针函数
指针函数就是指针的函数,表示一个函数的返回类型为指针的函数
示例代码
#include<stdio.h>
#include<stdlib.h>
int* p1(int *pa)
{
int data = 10;
// int datas = *pa;
int sum = data + *pa;
int* c = ∑ //因为函数返回为int *所以将sum的地址放入c
return c;
}
int main()
{
int a = 5;
int *p;
p = p1(&a);
printf("%d\n",*p);
system("pause");
return 0;
}