📄 pointer_fun.cpp
字号:
#include "stdafx.h"
// 定义: 一个函数在编译时被分配给一个入口地址,这个入口地址就称为函数的指针。可以用一个指针变量指向函数,然后通过该指针变量调用此函数。
// 每一个函数都占用一段内存单元,它们都有一个起始地址。因此可以使用一个指针变量指向一个函数,然后通过该指针变量调用此函数。
// 函数名代表了函数的入口地址。
// 指向函数的指针
void pointerFunction()
{
int max0(int a, int b);
int res = 0;
// 函数的调用
//int res = max0(5,7);
//printf("%d\n", res);
/*
// 通过函数指针调用
int (*p)(int, int); //定义, 后面2个int 指明了参数的类型以及个数
p = max0; // 初始化,将函数的入口地址赋值给 p
res = (*p)(10,12); // 调用
printf("%d\n", res);
*/
// 函数的指针作为函数参数 ***********************************************
// 函数声明
int pointerFunctionPram(int a, int b, int (*function)(int a, int b));// 声明
// 初始化求最大值函数
int (*p_max0)(int, int);
p_max0 = max0;
// 初始化求最小值函数
int min(int a, int b);
int (*p_min)(int, int);
p_min = min;
// 初始化调用函数
/*
int (*p_pointerFunctionPram)(int a, int b, int (*function)(int a, int b));
p_pointerFunctionPram = pointerFunctionPram;// 初始化
res = (*p_pointerFunctionPram)(10, 20,max0); // 使用
printf("max0 = %d\n", res);
*/
int a = 10;
int b = 100;
int process(int a, int b, int (*funName)(int aa, int bb)); //声明
// res = process(a, b,max0);
res = process(a, b,p_max0);
printf("max0 = %d\n", res);
res = process(a, b, min); // 函数指针作为函数参数
printf("min = %d\n", res);
//******** 测试 返回指针值的函数
int *account(int a, int b); //声明
int *p_account;
p_account = account(1, 10);// 函数调用
printf("%d\n", *p_account); // 取值
}
int max0(int a, int b)
{
return (a > b)?a:b;
}
int min(int a, int b)
{
return (a < b)?a:b;
}
// 函数指针作为函数参数
int pointerFunctionPram(int a, int b, int (*funName)(int a, int b))
{
int res = (*funName)(a, b);
return res;
}
// 函数指针作为函数参数 功能同上
int process(int a, int b, int (*funName)(int a, int b))
{
int res = (*funName)(a, b); // int res = max0(a, b);
return res;
}
//*****************************************************************8
// 返回指针值的函数
// 定义形式:
// 类型名 *函数名(参数列表)
// int *account(int a, int b) ,求【a, b】区间的累加值
// 函数有返回值,这个返回值在内存中也有一个地址,现在将这个地址返回,就是返回
// 指针值的函数 。
int *account(int a, int b)
{
int *p;
int res = 0;
for (int i = a; i <= b; i++)
{
res = res + i;
}
p = &res; // ok
// *p = res; // error,p没有被初始化
return p; // 返回指针res的地址
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -