这篇文章主要讲解了“C语言怎么写类”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言怎么写类”吧!
对她 就是操空MYSQL的C程序, 我叫她去干删除日志表的工作!
不过最近要对她增加适应工作环境,有的环境需要CA证书,比如说RDS,亚马逊,以及MYSQL自己的证书.
所以对原本的参数需要增加3项. 另外的就是原本参数使用的是数组,无法动态根据实际参数大小来存储.有时候浪费很多内存,有的时候数组不会存储结尾字符'\0' 比如说参数 char is_ssl[3]; 如何是no则没有问题,YES倒是有问题.丢失了结尾符号.在后面比较的时候就无法判断了.
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <malloc.h> #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<KEYSIZE; i++) { param->pArr[i]=NULL; } } //--------------------------------------------------------------------------------------------------------------------- void free_Parameter(Parameter* param ) { for (int i=0;i<KEYSIZE;i++) { free (param->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 设置成了数据成员,
另外我们再定义两个函数指针成员.
这样我们的类就定义完成了.
接着我们在主函数里面 定义类的 参数对象
TParameter ParamObj;
这里是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.IP Length:%d\n",strlen(ParamObj.param.ip));
最后我们释放数据成员的内存
ParamObj.free(&ParamObj.param);
我们一般都定义为址传给函数; 因为这样非常快; 传内存地址 也就是4-8字节
而传值 就大于8字节;
strlen(ParamObj.param.ip) 就13个字节!
感谢各位的阅读,以上就是“C语言怎么写类”的内容了,经过本文的学习后,相信大家对C语言怎么写类这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。