0
点赞
收藏
分享

微信扫一扫

练习(6.29)

#define _CRT_SECURE_NO_WARNINGS 1 
#include<stdio.h>
#include<string.h>

//数组指针——是指向数组的指针
//函数指针——是指向函数的指针,是存放函数地址的一个指针

//void print(char* str)
//{
// printf("%s", str);
//}
//int Add(int a, int b)
//{
// return (a + b)/2;
//}
//int main()
//{
// int a=10, b=20;
// //printf("%d\n", Add(a, b)); //结果是30
//
// //&函数名 和 函数名都是函数的地址
// /*printf("%p\n", &Add);
// printf("%p\n", Add);*/
//
// //利用函数指针打印
// int (*p)(int ,int) = Add; //函数指针
// printf("%d\n", Add(100, 100)); //Add == p
// printf("%d\n", (*p)(100, 100));
// printf("%d\n", (**p)(100, 100)); //多少颗*都可以,不影响结果,下面的pt函数也一样
//
// void (*pt)(char*) = print;
// (pt)("hello world");
// return 0;
//}

////signal是一个函数声明
////signal函数的返回类型是一个函数指针,该函数指针指向的参数是int,返回类型是void
//void(*signal(int, void(*)(int)))(int);

////typedef unsigned int uint;
//typedef void(*pfun_s)(int);//函数指针应定义在*后面
//pfun_s(signal(int, pfun_s));

//(*(void(*)())0)();
//把0强制类型转换为:void(*)()函数指针--0就是一个函数的地址,再调用0地址处的该函数

//函数指针数组定义
//int(*parr1[10])(); //cor
//int* parr2[10](); //err
//int(*)() parr3[10] //err

//函数指针数组举例
//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(*p)(int, int) = Add;//函数指针
// int(*parr[4])(int, int) = { Add ,Sub,Mul,Div };//函数指针数组
// for (int i = 0; i < 4; i++)
// {
// printf("%d\n", parr[i](2, 3)); //打印结果:5 -1 6 0
// }
// return 0;
//}


//char* my_strcpy(char* dest, const char* src);
////1.写一个函数指针pf,指向my_strcpy
//char* (*pf)(char*, const char* )=my_strcpy;
////2.写一个函数指针数组pfArr,能够存放4个my_strcpy函数的地址
//char* (*pfArr[4])(char* , const char* );

//函数指针数组的指针
//int main()
//{
// int (*pf)(int, int); //函数指针
// int (*pfArr[4])(int, int);//pfArr是一个数组,函数指针的数组
//
// int (*(*ppfArr)[4])(int, int)=&pfArr;//该指针是指向[函数指针数组]的指针
////ppfArr是一个数组指针,指针指向的数组有4个元素,每个元素的类型是函数指针 int(*)(int,int)
// return 0;
//}

//回调函数就是一个通过函数指针调用的函数
void print3(char* str) //print3是一个回调函数
{
printf("%s", str);
}
void test(void (*p)(char*) )
{
printf("hello Tencent\n");
p("print3是回调函数\n");
}
int main()
{
test(print3);
return 0;
}
举报

相关推荐

0 条评论