1.函数和指针
数组名保存的就是数组的地址,所以可以直接将数组名赋值给一个指针变量
函数名和数组名非常相似,函数名称保存的也是函数的地址,所以可以直接将函数名赋值给一个指针变量
2.如何定义一个指向函数的指针?
2.1如何定义一个普通的函数指针
1.将变量拷贝过来
2.在数据类型和变量名称中间加上一颗*
3.修改变量名称
2.2如何定义一个指向函数的指针变量?
1.将函数的声明拷贝过来
2.在函数的返回值和函数名称相同
指向函数指针练习1
#include <stdio.h>
#include <string.h>
void say();
int minus(int a,int b);
int max(int a,int b);
int main()
{
//需求:定义指针指向下列函数
void (*p1)();
p1 = say;
p1();
int (*p2)(int a,int b);
p2 = minus;
int res = p2(10,20);
printf("res = %i\n",res);
int (*p3)(int a,int b);
p3 = max;
int res1 = p3(10,20);
printf("res = %i\n",res1);
return 0;
}
void say(){
printf("hello world\n");
}
int minus(int a,int b){
return a-b;
}
int max(int a,int b){
return a+b;
}
char* (*p4)();
p4=test;
char *res3 = p4();
printf("res3 = %s\n",res3);
char *test()
{
char *name="lzf";
return name;
}
指向函数的指针练习2:
需求:定义一个函数,想让函数返回和时就返回和,想让函数返回差时就返回差
#include <stdio.h>
#include <string.h>
int minus(int a,int b);
int sum(int a,int b);
int calculate(int a,int b,int (*p)(int a,int b));
int main()
{
int res = calculate(10,20,minus);
printf("res = %i\n",res);
return 0;
}
int calculate(int a,int b,int (*p)(int a,int b))
{
return p(a,b);
}
int minus(int a,int b){
return a-b;
}
int sum(int a,int b){
return a+b;
}