关于C语言函数指针实现部分面相对…

  其实很早就知道这样的概念,只是今天想着来实现一下。首先来理解一下函数指针的定义。对于一个函数原型为
                int  PUSH(LNode  *node,  int    data);      那么我们定义函数指针应该为
                int  (*p)(LNode  *node,  int  data);//定义一个 函数指针,该指针指向带LNode指针类型和int类型的两个形参,并 返回int类型的值。
  这里要注意一点一定要加(*p)如果不加括号则变成了定义一个函数。
                int  *p(LNode  *node,  int  data);//定义一个 函数,该函数带有LNode指针类型和int类型的两个形参,并返回 int指针类型的值。
如果我们要定义一个返回指针类型的函数指针呢?
int *(*p)(LNode *node,int data);//定义一个 函数指针,该函数指针带有LNode指针类型和int类型的两个形参,并且返回 int指针类型的值。
  到这里应该很清楚函数指针定义的技巧了把?
总结:定义函数指针即int/void/char/int*/struct/struct*+(*name)+(形参列表);
那么正题来了。如何在结构体中实现部分面向对象的功能呢?很简单。在结构体中定义函数指针。然后在指向对应函数。最后进行调用就OK啦。
例:
typedef struct{
int *elem;
int (*Del)(int *elem);
}Node;
初始化:
int flag;//表示函数返回状态
int arr[]={1,2,3};
Node node;
node={arr,delet};//结构体函数指针初始化。
flag=node.Del(node.elem);//调用结构体中定义的函数指针。
本次内容就到此为止了。
复制去Google翻译 翻译结果
.elem
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值