一.指针函数
// zhizhenhanshu.cpp : 指针函数的运用
# include <stdio.h>
//# include <stdlib.h>
#include <iostream>
using namespace std;
int* func_sum(int n)//指针函数
{
if (n < 0)
{
printf("error:n must be > 0\n");//如果输入小于0打印
exit(-1);//用来终止程序执行,并返回一个状态给操作系统这是标准库中的函数
}
static int sum = 0;
int* p = ∑//p存着变量sum的地址
for (int i = 0; i < n; i++)
{
sum += i;//小于n的整数累加
}
return p;
}
int main()
{
int num = 0;
printf("please input one number:");
cin >> num;//接收控制台输入数值
int* p = func_sum(num);
printf("sum:%d\n", *p);//输出指向地址p的值
return 0;
}
运行:
二.函数指针
// 函数指针.cpp :
#include <iostream>
int add(int x, int y) { return x + y; }//add函数
int (*func_ptr)(int, int) = &add;//定义了一个指向‘add’函数的指针,并将其指向‘add’函数的地址//&可省略
int main()
{
int result = (*func_ptr)(3, 4);//(*func_ptr)表示对函数指针解引用,获取其指向的函数地址所对应的函数,并传递相应的参数
std::cout << result;//调用add(3,4),result=7
}
运行:
三.函数指针与typedef
// typdef.cpp : typedef和函数指针
//
#include <iostream>
void task1(void) { std::cout << "I'm task1\n"; }//函数定义
void task2(void) { std::cout << "I'm task2\n"; }//函数定义
void task3(void) { std::cout << "I'm task3\n"; }//函数定义
typedef void(*func)(void);//声明一个"void(*)(void)"类型的函数指针func
void gtask(char i)
{
func vtask[3] = { &task1,&task2,&task3 };
func f= vtask[i];
(*f)();
}
int main()
{
gtask(2);
std::cout << "Hello World!\n";
}
运行
----typedef的基本用法:
typedef unsigned char UCHAR
使用 UCHAR i 就等同于 unsigned char i