C语言如何写类实现教程示例
这篇文章主要为大家介绍了C语言如何写类的实现教程示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,
以前用C++BUILDER写类非常爽.
类把涉及数据相关的操作打包成一个类.
(资料图片仅供参考)
然后后期开发工程师可以继承啊, 这样提升了开发效率.
不过C语言注重的是执行效率, 类的继承会导致内存的浪费,可能导致性能不佳!
最近继续完善我那个小C,大家还记得小C妹子吗?
对她 就是操空MYSQL的C程序, 我叫她去干删除日志表的工作!
不过最近要对她增加适应工作环境,有的环境需要CA证书,比如说RDS,亚马逊,以及MYSQL自己的证书.
所以对原本的参数需要增加3项.另外的就是原本参数使用的是数组,无法动态根据实际参数大小来存储.有时候浪费很多内存,有的时候数组不会存储结尾字符"\0" 比如说参数char is_ssl[3]; 如何是no则没有问题,YES倒是有问题.丢失了结尾符号.在后面比较的时候就无法判断了.
#include#include #include #include #define KEYSIZE 15 typedef struct { union { struct { char* ip; char* user; char* port; char* passwd; char* schema; char* table_name; char* limit_rows; char* total_sql; char* del_sql; char* logfile; char* is_ssl; char* client_cert; char* client_key; char* ca_cert; char* is_debug; } ; char *pArr[KEYSIZE]; }; } Parameter; typedef struct { Parameter param; void (*init) (Parameter* param ); void (*free) (Parameter* param ); }TParameter; //--------------------------------------------------------------------------------------------------------------------- void init_Paramter(Parameter* param ) { for(int i=0;i pArr[i]=NULL; } } //--------------------------------------------------------------------------------------------------------------------- void free_Parameter(Parameter* param ) { for (int i=0;i pArr[i]); param->pArr[i]=NULL; } } int main() { TParameter ParamObj; ParamObj.init=init_Paramter; ParamObj.free=free_Parameter; ParamObj.init(&ParamObj.param); ParamObj.param.ip= calloc(sizeof(char),strlen("192.168.0.155")+1); strcpy(ParamObj.param.ip,"192.168.0.155"); printf("ParamObj.IP:%s\n",ParamObj.param.ip); printf("ParamObj.IP Length:%d\n",strlen(ParamObj.param.ip)); ParamObj.free(&ParamObj.param); return 0; }
该类型 里面有个联合体字符指针数组;外加一个结构体参数;
数组的作用就是遍历结构体里面的指针, 从而可以初始化和释放内存操作
然后我们再套个结构体类型. 把Parameter设置成了数据成员,
另外我们再定义两个函数指针成员.
这样我们的类就定义完成了.
接着我们在主函数里面定义类的 参数对象
TParameterParamObj;
这里是C 不像C++ 我们需要手工关联函数指针成员. 说白点就是给它赋值
关联上具体函数地址.
ParamObj.init=init_Paramter;
ParamObj.free=free_Parameter;
接着我们通过函数来初始化我们的参数数据
ParamObj.init(&ParamObj.param);
然后就是我们正式的对数据成员动态分配堆内存
ParamObj.param.ip=calloc(sizeof(char),strlen("192.168.0.155")+1);
strcpy(ParamObj.param.ip,"192.168.0.155");
接下来就是对数据成员的使用
printf("ParamObj.IP:%s\n",ParamObj.param.ip);
printf("ParamObj.IPLength:%d\n",strlen(ParamObj.param.ip));
最后我们释放数据成员的内存
ParamObj.free(&ParamObj.param);
我们一般都定义为址传给函数;因为这样非常快;传内存地址也就是4-8字节
而传值 就大于8字节;
strlen(ParamObj.param.ip) 就13个字节!
C语言菜单
C语言的野指针
VSCODE 从相恋到分手
以上就是C语言如何写类实现教程示例的详细内容,更多关于C语言如何写类的资料请关注脚本之家其它相关文章!
关键词:
这篇文章主要为大家介绍了C语言如何写类的实现教程示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,
截止日期已由2023年4月25日下午五时正(香港时间)进一步延长至2023年5月5日下午五时正(香港时间)。
被誉为“投资界春晚”的伯克希尔·哈撒韦股东大会(巴菲特股东大会)即将于北京时间2023年5月6日召开。今年
第1个是全球第一的语音识别技术。现在人工智能浪潮兴起以后,万物互联很有可能由梦想照进现实。试想一下,
中环装备:关于2022年度利润分配预案的公告
4月25日晚间,贵州茅台酒股份有限公司(贵州茅台,600519 SH)披露一季报,一季度实现营业收入387 56亿元,
人物存在OOC本章博士开始装逼。求三连,评论加关注,尤其是多多评论谢谢了!演武传心的最后一天,博士他们
1、淮南有哪些学校1淮南联合大学4134011308安徽省淮南市专科2淮南职业技术学院4134012220安徽省淮南市专科3
你们好,最近小品发现有诸多的小伙伴们对于豉油鸡,豉油这个问题都颇为感兴趣的,今天小活为大家梳理了下,
日前,教育部公布2022年度普通高等学校本科专业备案和审批结果,新增了地球系统科学、生物统计学、未来机器
华塑科技(301157)04月25日在投资者关系平台上答复了投资者关心的问题。
依托“靠谱”党建联盟,甘泉路街道党工委积极整合区域化单位资源,调动多元主体发挥力量,通过多元协同合作
这是鄱阳湖干枯裸露的河床新华社资料图受连日来持续降雨和五河来水增多的影响,鄱阳湖水位持续上涨。4月23
封面新闻记者边雪4月24日,由中国宇航学会和中国航天基金会联合主办的2023年中国航天大会主论坛在安徽合肥
据微信公众号“全国碳交易”,4月25日全国碳市场碳排放配额(CEA)挂牌协议交易成交量500吨,成交额26,700
当地时间4月25日,俄罗斯外交部发言人扎哈罗娃在接受俄媒采访时表示,俄罗斯不会对美国不给俄外长拉夫罗夫
1、暖胃红豆粥是以黑米、糯米为主料的食品。文章到此就分享结束,希望对大家有所帮助。
当地时间周一,惠而浦公布的第一季业绩好于预期。
1、会考证号980601035231姓名李嘉赫年级08学校代码060103政治B物理B化学B历史B地理C信息技术A。本文到此分
信息化龙头公司开盘即一字跌停