如何用C语言编写实现类似面向对象编程的类教程示例?

2026-04-12 06:121阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计979个文字,预计阅读时间需要4分钟。

如何用C语言编写实现类似面向对象编程的类教程示例?

目录+引言+操作MySQL的C程序+定义一个+联合体+结构体类型+Parameter+引言+使用C++Builder编写类非常爽.+类将涉及及数据相关的操作打包成一个类.+后期开发工程师可以继承并扩展,这样提高了开发效率。

目录
  • 引言
  • 操空MYSQL的C程序
  • 定义个 联合体+结构体类型 Parameter

引言

以前用C++BUILDER写类非常爽.

类把涉及数据相关的操作打包成一个类.

然后后期开发工程师可以继承啊, 这样提升了开发效率.

不过C语言注重的是执行效率, 类的继承会导致内存的浪费,可能导致性能不佳!

最近继续完善我那个小C,大家还记得小C妹子吗?

如何用C语言编写实现类似面向对象编程的类教程示例?

操空MYSQL的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

该类型 里面有个联合体字符指针数组;外加一个结构体参数;

数组的作用就是遍历结构体里面的指针, 从而可以初始化和释放内存操作

然后我们再套个结构体类型. 把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语言如何写类的资料请关注自由互联其它相关文章!

本文共计979个文字,预计阅读时间需要4分钟。

如何用C语言编写实现类似面向对象编程的类教程示例?

目录+引言+操作MySQL的C程序+定义一个+联合体+结构体类型+Parameter+引言+使用C++Builder编写类非常爽.+类将涉及及数据相关的操作打包成一个类.+后期开发工程师可以继承并扩展,这样提高了开发效率。

目录
  • 引言
  • 操空MYSQL的C程序
  • 定义个 联合体+结构体类型 Parameter

引言

以前用C++BUILDER写类非常爽.

类把涉及数据相关的操作打包成一个类.

然后后期开发工程师可以继承啊, 这样提升了开发效率.

不过C语言注重的是执行效率, 类的继承会导致内存的浪费,可能导致性能不佳!

最近继续完善我那个小C,大家还记得小C妹子吗?

如何用C语言编写实现类似面向对象编程的类教程示例?

操空MYSQL的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

该类型 里面有个联合体字符指针数组;外加一个结构体参数;

数组的作用就是遍历结构体里面的指针, 从而可以初始化和释放内存操作

然后我们再套个结构体类型. 把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语言如何写类的资料请关注自由互联其它相关文章!