最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語(yǔ)言如何寫類實(shí)現(xiàn)教程示例

 更新時(shí)間:2023年04月25日 15:53:54   作者:海鯊數(shù)據(jù)庫(kù)架構(gòu)師  
這篇文章主要為大家介紹了C語(yǔ)言如何寫類的實(shí)現(xiàn)教程示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

引言

以前用C++BUILDER  寫類非常爽.

類把涉及數(shù)據(jù)相關(guān)的操作打包成一個(gè)類.

然后后期開發(fā)工程師可以繼承啊, 這樣提升了開發(fā)效率.

不過(guò)C語(yǔ)言注重的是執(zhí)行效率, 類的繼承會(huì)導(dǎo)致內(nèi)存的浪費(fèi),可能導(dǎo)致性能不佳!

最近繼續(xù)完善我那個(gè)小C,大家還記得小C妹子嗎?

操空MYSQL的C程序

對(duì)她 就是操空MYSQL的C程序, 我叫她去干刪除日志表的工作!

不過(guò)最近要對(duì)她增加適應(yīng)工作環(huán)境,有的環(huán)境需要CA證書,比如說(shuō)RDS,亞馬遜,以及MYSQL自己的證書.

所以對(duì)原本的參數(shù)需要增加3項(xiàng). 另外的就是原本參數(shù)使用的是數(shù)組,無(wú)法動(dòng)態(tài)根據(jù)實(shí)際參數(shù)大小來(lái)存儲(chǔ).有時(shí)候浪費(fèi)很多內(nèi)存,有的時(shí)候數(shù)組不會(huì)存儲(chǔ)結(jié)尾字符'\0' 比如說(shuō)參數(shù) char is_ssl[3]; 如何是no則沒(méi)有問(wèn)題,YES倒是有問(wèn)題.丟失了結(jié)尾符號(hào).在后面比較的時(shí)候就無(wú)法判斷了.

#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;
}

定義個(gè) 聯(lián)合體+結(jié)構(gòu)體 類型 Parameter

該類型 里面有個(gè)聯(lián)合體 字符指針數(shù)組 ; 外加一個(gè)結(jié)構(gòu)體參數(shù);

數(shù)組的作用就是遍歷結(jié)構(gòu)體里面的指針, 從而可以初始化和釋放內(nèi)存操作

然后我們?cè)偬讉€(gè)結(jié)構(gòu)體類型. 把 Parameter 設(shè)置成了數(shù)據(jù)成員,

另外我們?cè)俣x兩個(gè)函數(shù)指針成員.

這樣我們的類就定義完成了. 

接著我們?cè)谥骱瘮?shù)里面 定義類的 參數(shù)對(duì)象

 TParameter ParamObj;

這里是C 不像C++ 我們需要手工關(guān)聯(lián) 函數(shù)指針成員. 說(shuō)白點(diǎn)就是給它賦值

關(guān)聯(lián)上具體函數(shù)地址.

ParamObj.init=init_Paramter; 
 ParamObj.free=free_Parameter; 

接著我們通過(guò)函數(shù)來(lái)初始化我們的參數(shù)數(shù)據(jù)

ParamObj.init(&ParamObj.param);

然后就是我們正式的對(duì)數(shù)據(jù)成員動(dòng)態(tài)分配堆內(nèi)存

ParamObj.param.ip= calloc(sizeof(char),strlen("192.168.0.155")+1);  

strcpy(ParamObj.param.ip,"192.168.0.155");

接下來(lái)就是 對(duì)數(shù)據(jù)成員的使用

printf("ParamObj.IP:%s\n",ParamObj.param.ip);  
printf("ParamObj.IP Length:%d\n",strlen(ParamObj.param.ip));

最后我們釋放數(shù)據(jù)成員的內(nèi)存

ParamObj.free(&ParamObj.param);

我們一般都定義為址傳給函數(shù); 因?yàn)檫@樣非常快; 傳內(nèi)存地址 也就是4-8字節(jié)

而傳值 就大于8字節(jié);

strlen(ParamObj.param.ip) 就13個(gè)字節(jié)!

C語(yǔ)言菜單

C語(yǔ)言的野指針

VSCODE 從相戀到分手

以上就是C語(yǔ)言如何寫類實(shí)現(xiàn)教程示例的詳細(xì)內(nèi)容,更多關(guān)于C語(yǔ)言如何寫類的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • c語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的易語(yǔ)言

    c語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的易語(yǔ)言

    在本篇內(nèi)容里小編給大家整理了一篇關(guān)于c語(yǔ)言實(shí)現(xiàn)一個(gè)簡(jiǎn)單的易語(yǔ)言的相關(guān)知識(shí)點(diǎn),需要的朋友們參考下。
    2018-12-12
  • C++實(shí)現(xiàn)比較日期大小的示例代碼

    C++實(shí)現(xiàn)比較日期大小的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何使用C++實(shí)現(xiàn)比較日期大小的功能,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的可以了解一下
    2023-04-04
  • C語(yǔ)言字符/字符串相關(guān)函數(shù)收藏大全

    C語(yǔ)言字符/字符串相關(guān)函數(shù)收藏大全

    這篇文章主要給大家介紹了關(guān)于C語(yǔ)言字符/字符串的相關(guān)函數(shù),文中通過(guò)示例代碼總結(jié)的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C語(yǔ)言具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • C++中Boost的轉(zhuǎn)換函數(shù)

    C++中Boost的轉(zhuǎn)換函數(shù)

    這篇文章介紹了C++中Boost的轉(zhuǎn)換函數(shù),文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之模式匹配字符串定位問(wèn)題

    C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之模式匹配字符串定位問(wèn)題

    這篇文章主要介紹了C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之模式匹配字符串定位問(wèn)題的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家理解這部分內(nèi)容,需要的朋友可以參考下
    2017-10-10
  • 十個(gè)C++惡搞朋友的代碼合集

    十個(gè)C++惡搞朋友的代碼合集

    這篇文章主要為大家整理了十個(gè)C++中可以惡搞朋友的代碼合集(注意!從第五個(gè)開始為危險(xiǎn)/永久性程序,請(qǐng)慎重使用),感興趣的小伙伴可以收藏一下
    2023-02-02
  • 基于C語(yǔ)言實(shí)現(xiàn)掃雷小游戲

    基于C語(yǔ)言實(shí)現(xiàn)掃雷小游戲

    這篇文章主要為大家詳細(xì)介紹了基于C語(yǔ)言實(shí)現(xiàn)掃雷小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C++模板template用法小結(jié)(推薦)

    C++模板template用法小結(jié)(推薦)

    這篇文章主要介紹了C++模板template用法總結(jié) ,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • 詳解C++之C++11的牛逼特性

    詳解C++之C++11的牛逼特性

    這篇文章主要介紹了C++之C++11的牛逼特性,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2020-09-09
  • C++中的Lambda表達(dá)式及表達(dá)式語(yǔ)句

    C++中的Lambda表達(dá)式及表達(dá)式語(yǔ)句

    這篇文章主要介紹了C++中的Lambda表達(dá)式及表達(dá)式語(yǔ)句,表達(dá)式這個(gè)概念在C++中屬于比較細(xì)節(jié)的知識(shí)了,很多時(shí)候我們只用知道怎么用,對(duì)于編譯器內(nèi)部怎么處理我們并不關(guān)心;并且關(guān)于左值和右值這個(gè)概念,也是C++比較深的一個(gè)小知識(shí)點(diǎn),需要的朋友可以參考一下
    2021-12-12

最新評(píng)論

太湖县| 汪清县| 张家口市| 盱眙县| 河南省| 大新县| 浦东新区| 潮州市| 沾化县| 德惠市| 深泽县| 吴旗县| 保靖县| 阳新县| 教育| 威信县| 黄山市| 桓台县| 海门市| 砚山县| 穆棱市| 宁蒗| 鄯善县| 双柏县| 阿荣旗| 多伦县| 九龙县| 邢台县| 仙居县| 泰来县| 洪湖市| 武宣县| 哈巴河县| 大洼县| 万宁市| 潮州市| 祁阳县| 江西省| 和田市| 汕尾市| 乡城县|