自定义数组和自定义函数
数组类型的语法。
int a[10];
{
//定义一个数组类型。int a[10]
typedef int(myTypeArray1)[10];
myTypeArray1 myArray;
myArray[0] = 10;
}
//定义一个指针数组类型
typedef int(*PTypeArray)[10];
PTypeArray myPArray;
myPArray = &a;
*myPArray[0] = 20;
printf("myPArray%d", *myPArray[0]);
//定义一个指针数组类型的指针
int(*PTypeArray2)[10];
PTypeArray2 = &a;
*PTypeArray2[0] = 40;
printf("myPArray%d", *PTypeArray2[0]);
输出结果:40。
自定义函数
定义一个函数类型
//间接调用。
int add(int a, int b)
{
printf("func add");
return a + b;
}
{
typedef int (MyFuncType)(int a, int b);
MyFuncType *myPointerFunc = NULL;
myPointerFunc = &add;
myPointerFunc(3, 4); //简介调用。
}
定义一个函数指针类型
//定义一个函数指针类型
{
typedef int(*MyPointFuncType)(int a, int b);
MyPointFuncType myPointer;
myPointer = add;
myPointer(5, 6);
}
//直接定义函数指针
{
int(*MyPointerFunc)(int a, int b);
MyPointerFunc = add;
MyPointerFunc(7, 8);
}
C语言实现C++多态的效果
int myadd(int a, int b) //任务的实现者。
{
printf("func add\n");
return a + b;
}
int myadd2(int a, int b) //任务的实现者。
{
printf("func add2\n");
return a + b;
}
int myadd3(int a, int b) //任务的实现者。
{
printf("func add3\n");
return a + b;
}
int myadd4(int a, int b) //任务的实现者。
{
printf("func add4\n");
return a + b;
}
//定义了一个函数类型。
typedef int(*MyPointFuncAdd)(int a, int b);
int MainOp(MyPointFuncAdd myFuncAdd)
{
int c= myFuncAdd(5, 6);
return c;
}
int MainOp2(int(*MyPointerFuncAdd)(int a, int b))
{
int c=MyPointerFuncAdd(5, 6);
return c;
}
//间接调用
void main()
{
/*
myadd(1,2);
MyPointFuncAdd myFuncAdd = NULL;
myFuncAdd = myadd;
myFuncAdd(3, 4);//间接调用。
MainOp2(myadd);
MainOp(myadd);
//在mainop框架没有发生任何变化的情况下,可
*/
MainOp2(myadd2);
//在mainop没有发生任何变化的情况下...可以
printf("aaa");
system("pause");}
注:上边的代码实际上任务的调用者和任务的实现者分开调用了。
刘备利用周瑜、曹仁厮杀之际,乘虚袭取了南郡、荆州、襄阳,以后又征服了长沙等四郡。周瑜想想十分气恨,正无处报复以夺还荆州。不久,刘备忽然丧偶,周瑜计上心来,对孙权说:“您的妹妹,美丽、刚强,我们以联姻抗曹名义向刘备招亲,把他骗来南徐幽禁,逼他们拿荆州来换。”孙权大喜,郎派人到荆州说亲。
刘备认为这是骗局,想要拒绝,诸葛亮笑道:“送个好妻子上门何不答应?您只管去东吴,我叫赵云陪您去,自有安排,包您得了夫人又不失荆州。”
接着,诸葛亮暗暗关照赵云道:“我这里有三个锦囊,内藏三条妙计。到南徐时打开第一个,到年底时打开第二个,危急无路时打开第三个。”
第一个锦囊
一到东吴就拜会乔国老
第二个锦囊
刘备被孙权设计留下就对他谎称曹操大军压境
第三个锦囊
被东吴军队追赶就求孙夫人解围
如下图:
为什么能实现回调的效果?
typedef int(*MyPointFuncAdd)(int a, int b);
把函数的参数函数返回值提前做了一个约定。