【C语言实现多态效果实例】

简介: 【C语言实现多态效果实例】

在C++中通过虚函数重写可以实现多态效果,即同一个调用语句,传入不同参数产生不同的状态。在C语言中,通过函数指针做函数参数其实也可以实现这个效果,下面通过计算图形面积的实例来实现C语言多态,通过同一个调用语句,传入不同图形函数来打印面积。

#define  _CRT_SECURE_NO_WARNINGS 
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
double GetSquareArea(int a, int b)
{
  return a * b;
}
double GetCircular(int r, int)
{
  return r * r * 3.14;
}
double GetTriangle(int h, int l)
{
  return 0.5 * h * l;
}
void PrintArea(int a, int b, double (*_cbGetArea)(int a, int b))
{
  printf("图形的面积为:%f\n", _cbGetArea(a, b));
}
int main()
{
  PrintArea(10, 10, GetSquareArea);
  PrintArea(10, 0, GetCircular);
  PrintArea(10, 10, GetTriangle);
  system("pause");
  return 0;
}

C语言实现多态的理论基础请见我的文章

函数指针做函数参数核心思想

C++中多态的详细介绍可查看我的另一篇文章,链接如下

C++多态案例


相关文章
|
8月前
|
C语言
C语言实例——猴子吃桃
【1月更文挑战第17天】C语言实例——猴子吃桃。
73 1
|
8月前
|
Ubuntu 编译器 Linux
C语言中经典的结构体和联合体共用实例
C语言中经典的结构体和联合体共用实例
73 0
|
8月前
|
Shell C语言
C语言实例——小球自由下落
【1月更文挑战第16天】C语言实例——小球自由下落。
133 0
|
8月前
|
C语言
C语言实例——1000以内的所有完数
【1月更文挑战第16天】C语言实例——1000以内的所有完数。
122 0
|
1月前
|
存储 网络协议 算法
【C语言】进制转换无难事:二进制、十进制、八进制与十六进制的全解析与实例
进制转换是计算机编程中常见的操作。在C语言中,了解如何在不同进制之间转换数据对于处理和显示数据非常重要。本文将详细介绍如何在二进制、十进制、八进制和十六进制之间进行转换。
41 5
|
8月前
|
存储 数据处理 C语言
C语言高级应用探讨与实例
C语言高级应用探讨与实例
66 1
|
8月前
|
C语言
C语言实例
【1月更文挑战第17天】C语言实例。
41 0
|
8月前
|
存储 编译器 C语言
从C语言到C++_23(多态)抽象类+虚函数表VTBL+多态的面试题(下)
从C语言到C++_23(多态)抽象类+虚函数表VTBL+多态的面试题
73 1
|
8月前
|
存储 编译器 Linux
从C语言到C++_23(多态)抽象类+虚函数表VTBL+多态的面试题(中)
从C语言到C++_23(多态)抽象类+虚函数表VTBL+多态的面试题
72 1
|
8月前
|
C语言
C语言循环结构程序设计详解及代码实例
C语言循环结构程序设计详解及代码实例
227 0