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

C語言中結構體變量私有化詳解

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

背景介紹

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

gcc版本 :4.8.5

什么是結構體?

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

問題描述

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

解決方案

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

比如有如下結構體(obj.h文件中定義):

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

并定義如下變量:

Obj *o;

正常情況下,可以通過如下代碼正常訪問結構體中的變量:

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

如果將結構體的定義放入源文件中,上述代碼將會報如下錯誤:

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

如需外部訪問,可通過添加相關接口實現(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

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

總結

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

相關文章

最新評論

名山县| 德清县| 泸定县| 沙田区| 岳西县| 梨树县| 沂源县| 华宁县| 山丹县| 黄龙县| 陆川县| 上饶市| 克什克腾旗| 监利县| 临西县| 金川县| 姜堰市| 扶风县| 汶上县| 中西区| 曲周县| 分宜县| 合水县| 永修县| 南丹县| 镇沅| 中山市| 平谷区| 卫辉市| 湟源县| 黄骅市| 文成县| 阿坝县| 濮阳县| 盖州市| 嘉祥县| 苗栗县| 鄂伦春自治旗| 化隆| 宿州市| 安陆市|