新聞中心

        EEPW首頁 > 嵌入式系統 > 牛人業話 > C語言的一些高級議題

        C語言的一些高級議題

        作者:areak 時間:2014-10-23 來源:電子產品世界 收藏

          之面向對象

        本文引用地址:http://www.104case.com/article/264327.htm

          我們經常說是面向過程的語言,而C++、JAVA是面向對象的,但是面向對象并不是C++、JAVA的專利,里面也有面向對象的思想,比如我們經常使用的結構體。

          struct student

          {

          char name[256];

          int age;

          };

          學生的姓名和年齡,就是學生自身的屬性,和C++里面的成員變量是一樣的概念,但是這個結構體里面并沒有體現出方法的使用。在面向對象中有封裝的概念,結構體中的成員我們不應該直接訪問,而應該通過方法訪問,我們可以添加訪問結構體成員變量的方法。

          char* get_name(student * self);//獲取學生姓名

          void set_name(student * self, char* name);//設置學生姓名

          char* get_name(student * self)

          {

          return self->name;

          }

          void set_name(student * self, char* name)

          {

          strncpy(self->name, name, sizeof(self->name));

          }

          此處省略age的設置和獲取功能。

          現在類的數據、方法都有了,下一步就是要使用類創建、初始化、析構、銷毀對象,在C++中有new、delete操作符負責創建和銷毀,使用C語言實現如下:

          student * student _create(void);// 對象創建和初始化

          void student _destroy(student * self);// 對象析構和銷毀

          student * student _create(void)

          {

          student * self = malloc(sizeof(student));

          memset(self->name, 0x00, sizeof(self->name));

          self->age = 0;

          return self;

          }

          void student _destroy(student * self)

          {

          free(self);

          }

          至此,我們就可以采用面向對象的方式來編寫代碼了。

          student * student1= NULL;

          student1 = student _create();//創建對象

          set_name(student1, "mary");//初始化student1的名字為mary

          set_age(student1, 20); //初始化student1的年齡為20

          get_name(student1);//獲取student1的姓名

          student _destroy(student1);//銷毀對象

          當然C語言還有很多強大的功能,比如可變參數的設計,無一例外都要借助于來實現。以上內容參考于網絡資源,如有錯誤之處,懇請指正。

        c語言相關文章:c語言教程



        上一頁 1 2 下一頁

        關鍵詞: C語言 指針 函數

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 田林县| 文昌市| 宜春市| 剑川县| 遂川县| 隆子县| 招远市| 年辖:市辖区| 宝丰县| 格尔木市| 泽州县| 二连浩特市| 乐都县| 南郑县| 江川县| 万年县| 兖州市| 长乐市| 乾安县| 成安县| 广西| 苍山县| 东阳市| 循化| 筠连县| 岳西县| 全椒县| 会东县| 鄢陵县| 霍城县| 晋江市| 眉山市| 山阴县| 绍兴市| 高州市| 射洪县| 比如县| 河津市| 喀什市| 松桃| 博乐市|