您的位置:

依赖倒置c语言,c++依赖倒置

本文目录一览:

一维数组元素的倒置操作,用C语言写。

void reverse(int p[], int n)

{

    int *q,t;

    for(q=p+n-1;pq;++p,--q)

    {

        t=*p;

        *p=*q;

        *q=t;

    }

}

C语言如何实现数组元素倒置??

1、打开c语言编辑器,新建一个空白的文件:

2、这里可以开始写代码了,主函数的前面定义了数组和一些变量,倒置操作在for循环中完成,这里只需要第一个元素和最后一个元素交换、第二个元素和倒数第二个元素交换、以此类推……不管数组元素的个数是奇数还是偶数,这个算法都是成立的,最后则是打印输出结果:

3、最后程序编写完成需要验证一下结果,按下crtl+F5运行程序,弹出的窗口中就能看见逆序输出的数组元素了:

里氏替换原则与依赖倒置原则有什么区别

区别:

定义不同:里氏替换原则是关于子类与父类的原则;依赖倒置原则是关于抽象与细节的原则。

应用范围不同:依赖倒置原则的应用范围比里氏替换原则更广泛。

涉及的对象关系不同:里氏替换原则中的子类具有自己的独立性;依赖倒置原则中的细节依赖于抽象。

衍生知识点:

一、里氏替换原则

定义1:如果对每一个类型为T1的对象o1,都有类型为T2的对象o2,使得以T1定义的所有程序P在所有的对象o1都代换成o2时,程序P的行为没有发生变化,那么类型T2是类型T1的子类型。

定义2:所有引用基类的地方必须能透明地使用其子类的对象。

通俗来讲:子类可以扩展父类的功能,但不能改变父类原有的功能。是OCP的扩展。它包含以下四层含义:

1. 子类可以实现父类的抽象,但不能覆盖父类的非抽象方法

2. 子类中可以增加自己特有的方法

3. 当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入更宽松

4. 当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类的更严格

二、依赖倒置原则

定义:高层模块不应该依赖底层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。

问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原子操作;假如修改类A,会给程序带来不必要的风险。

解决方案:将类A修改为依赖接口I,类B和类C各自实现接口I,类A通过接口I间接与类B和类C发生联系,则会大大降低修改类A的几率。

核心思想:面向接口编程。含有下面3点:

1. 低层模块尽量都要有抽象类或接口,或者两者都有

2. 变量的声明类型尽量使抽象类或接口

3. 用继承时遵循里氏替换原则

用c语言实现数组倒置

#include stdio.h

void invert(int x[],int n);

void main()

{

int i,*p,a[10]={2,3,4,5,6,7,8,9,10,11};

printf("%s\n","元素倒置前:");

for(p=a;pa+10;) printf("%d ",*(p)++);

printf("\n");

p=a;

invert(p,10);

printf("%s\n","元素倒置后:");

for(p=a;pa+10;) printf("%d ",*(p)++);

printf("\n");

}

void invert(int x[],int n)

{

int temp,i,j,m=(n-1)/2;

for (i=0;i=m;i++)

{

j=n-1-i;

temp=x[i];x[i]=x[j];x[j]=temp;

}

}