用C语言实现程序的多态性

来源:计算机等级考试    发布时间:2012-08-28    计算机等级考试视频    评论


  建立新节点,代码如下:
  linkList newLinkList (void *data, int dataType)
  {
  linkList link = (linkList*)malloc(sizeof(*link));
  link->data = data;
  link->dataType = dataType;
  link->next = NULL;
  return link;
  }
  在已有链表的表头进行插入节点操作,代码如下:
  void insertFirst(linkList h, void *data, int dataType)
  {
  linkList l = newLinkList(data, dataType);
  l->next = h->next;
  h->next = l;
  }
  输出链表中数据到控制台,代码如下:
  void linkListOutput(linkList h)
  {
  linkList p = h;
  p = p->next;
  while(p != NULL)
  {
  switch(p->dataType)
  {
  case 0:
  {
  printf("%4d", *(int*)(p->data));
  break;
  }
  case 1:
  {
  printf("%4f", *(double*)(p->data));
  break;
  }
  case 2:
  {
  printf("%4c", *(char*)(p->data));
  break;
  }
  case 3:
  {
  printf("%s ", (char*)(p->data));
  break;
  }
  }
  p = p->next;
  }
  printf("/n");
  }
  小结
  通过上面这个链表的小例子,大家可能已经看到了 C 语言的灵活性。这段代码虽然短并且功能简单,但是已经实现了多态性。这篇文章的本意并不在于想要告诉大家用 C 实现多态的方法,而多态的含义也无疑是更加广泛的。这篇文章的初衷其实是基于这样一点认识:面向对象是一种程序设计思想,而 C 语言则是一种编程语言。也许它并不是专门为了面向对象编程而设计,但是这绝不意味着它不能实现面向对象的程序设计。当然以上所展示的这几个操作,如果是用别的编程语言,可能只要寥寥几行就可以完成,但是 C 语言想告诉我们的是:也许我不擅长,但是并不意味着我做不到。

  编辑特别推荐:

  printf的实现原理

  考试大教育全国计算机等级考试在线测试平台

  全国计算机等级考试论坛

  2010年9月全国计算机等级考试各科模拟试题冲刺

上一页123下一页

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答