- 复习上节内容
什么是指针数组什么是数组指针
取地址函数名和函数名都是打印函数地址
Pf指向的参数和函数的参数类型要一至。三种写法都可以实现调用
练习:如何解释图中代码作用
首先看(void(*)())如果我在(*)里放一个东西(*p)那么会变成(void(*p)())这样就可以看出这是一个函数指针,那么(viod(*)())是不是就是一种函数指针类型类似于int*等。0在括号里在类型的后面相当于一次强制类型转换,0是int类型把0转换成函数指针类型那我就认为0是指针地址。
以上代码是一次函数调用,调用的是0作为地址处的函数。
- 把0强制类型转换为:无参,返回类型是void的函数的地址
2.调用0地址处的这个函数
二、做一个计算器
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void cd()
{
printf("------------------------------------------------------");
printf("1.add 2.sub 3.mul 4.div 0.esc");
printf("------------------------------------------------------");
}
int add(int x, int y)
{
return x + y;
}
int sub(int x, int y)
{
return x - y;
}
int mul(int x, int y)
{
return x * y;
}
int div(int x, int y)
{
return x / y;
}
int main()
{
int input = 0;
int x = 0;
int y = 0;
int ret = 0;
do
{
cd();
printf("请选择:》");
scanf("%d", &input);
printf("请输入两个数:》");
scanf("%d %d", &x, &y);
switch (input)
{
case 1:
ret = add(x, y);
printf("%d\n", ret);
break;
case 2:
ret = sub(x, y);
printf("%d\n", ret);
break;
case 3:
ret = mul(x, y);
printf("%d\n", ret);
break;
case 4:
ret = div(x, y);
printf("%d\n", ret);
break;
case 0:
printf(" tui");
break;
default:
printf("选择错误");
}
} while (input);
return 0;
}