怎么在C语言中应用结构体实现c++类的思想

怎么在C语言中应用结构体实现c++类的思想

在结构体里定义一个函数成员,这样就可以运用类似c++类的成员函数

#include <stdio.h>

struct alink_stu
{
    void (*pfuc)();
};

void iface_provcode_setvalue()
{
    printf("iface_provCode_setvalue\n");

}

void iface_hwVer_setvalue()
{
    printf("iface_hwVer_setvalue\n");
}


struct alink_stu init_alink[]=
{
    {.pfuc=iface_provcode_setvalue},
    {.pfuc=iface_hwVer_setvalue}
};

int main(int argc , char const *argv[])
{
    
    int count = sizeof(init_alink)/sizeof(struct alink_stu);
    for(int i=0; i<count; i++)
    {
        init_alink[i].pfuc();
    }

    return 0;
}

运行结果:
在这里插入图片描述

稍微加上枚举成员判断函数类型:

#include <stdio.h>

enum type_num
{
	one=1,
	two
};

struct alink_stu
{
	union
	{
		char *(*pone)();
		int (*ptwo)();
	}pfuc;
	
	enum type_num etype; 
	
};

char *iface_provcode_setvalue()
{
    printf("iface_provCode_setvalue\n");
    return NULL;
}

int iface_hwVer_setvalue()
{
    printf("iface_hwVer_setvalue\n");
	return 0;
}

struct alink_stu init_alink[]=
{
    {.pfuc.pone=iface_provcode_setvalue, .etype=one},
    {.pfuc.ptwo=iface_hwVer_setvalue, .etype=two}
};

int main(int argc , char const *argv[])
{
    
    int count = sizeof(init_alink)/sizeof(struct alink_stu);
    for(int i=0; i<count; i++)
    {
		if(init_alink[i].etype==one)
        {
			init_alink[i].pfuc.pone();
			printf("[type]:one\n");
		}
		else if(init_alink[i].etype==two)
		{
			init_alink[i].pfuc.ptwo(
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值