新闻中心

EEPW首页 > 嵌入式系统 > 牛人业话 > C语言的一些高级议题

C语言的一些高级议题

作者:areak时间:2014-10-23来源:电子产品世界收藏

  之面向对象

本文引用地址:http://www.eepw.com.cn/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语言 指针 函数

评论


相关推荐

技术专区

关闭