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

C語言中結(jié)構(gòu)體變量私有化詳解

 更新時間:2018年07月03日 08:40:48   作者:Mike_Zhang  
結(jié)構(gòu)是由基本數(shù)據(jù)類型構(gòu)成的、并用一個標(biāo)識符來命名的各種變量的組合,下面這篇文章主要給大家介紹了關(guān)于C語言中結(jié)構(gòu)體變量私有化的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下

背景介紹

操作系統(tǒng) : CentOS7.3.1611_x64

gcc版本 :4.8.5

什么是結(jié)構(gòu)體?

在C語言中,結(jié)構(gòu)體(struct)指的是一種數(shù)據(jù)結(jié)構(gòu),是C語言中聚合數(shù)據(jù)類型(aggregate data type)的一類。結(jié)構(gòu)體可以被聲明為變量、指針或數(shù)組等,用以實現(xiàn)較復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。結(jié)構(gòu)體同時也是一些元素的集合,這些元素稱為結(jié)構(gòu)體的成員(member),且這些成員可以為不同的類型,成員一般用名字訪問。

問題描述

C語言結(jié)構(gòu)體定義中的變量默認(rèn)是公有(Public)屬性,如果實現(xiàn)成員變量的私有(Private)化?

解決方案

將結(jié)構(gòu)體的定義放入源碼件中實現(xiàn),頭文件只放聲明。

比如有如下結(jié)構(gòu)體(obj.h文件中定義):

struct Obj {
 int id;
 char *name;
};
typedef struct Obj Obj;

并定義如下變量:

Obj *o;

正常情況下,可以通過如下代碼正常訪問結(jié)構(gòu)體中的變量:

printf("id : %d\n",o->id);

如果將結(jié)構(gòu)體的定義放入源文件中,上述代碼將會報如下錯誤:

error: dereferencing pointer to incomplete type
 printf("id : %d\n",o->id);

如需外部訪問,可通過添加相關(guān)接口實現(xiàn),比如:

int get_obj_id(const Obj* o)
{
 int ret = 0;
 if(o)
 {
  ret = o.id;
 }
 return ret;
}

完整示例代碼如下:

https://github.com/mike-zhang/cppExamples/tree/master/dataTypeOpt/CStructPrivateTest1

好,就這些了,希望對你有幫助。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

最新評論

安达市| 米泉市| 木兰县| 五峰| 长海县| 东乌珠穆沁旗| 石棉县| 阿鲁科尔沁旗| 略阳县| 崇州市| 城固县| 陕西省| 鹿邑县| 郴州市| 和林格尔县| 仪征市| 卓资县| 文成县| 池州市| 多伦县| 丰都县| 嘉善县| 景泰县| 历史| 通道| 永平县| 潮州市| 潜江市| 灵璧县| 延安市| 四平市| 永清县| 乐都县| 岑溪市| 壶关县| 哈巴河县| 边坝县| 枝江市| 皮山县| 万宁市| 烟台市|