您好,登錄后才能下訂單哦!
這篇文章主要講解了“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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。