C语言高手进,C语言程序切片

C语言高手进,C语言程序切片,第1张

google了一下,找到一些概念:

定义:一个程序切片是由程序中的一些语句和判定表达式组成的集合.这些语句和判定表达式可能会影响在程序的某个位置(常用行号标识)p上所定义的或所使用的变量v的值。

所谓程序切片是指通过分析程序的数据依赖和控制依赖而达到自动分解源程序的一种方法.其中数据依赖揭示了语句间存在的数据流方面的内在联系而控制依赖则揭示了语句间存在的控制流的内在联系。

程序P的切片S是P的一个可执行部分,对某个兴趣点s处的变量v而言,这个可执行部分相对于程序P,在功能上是等效的[1].程序切片S由程序P中可能影响s处变量v的值的所有语句组成。

程序切片是一种分析和理解程序的技术,是通过对源程序中每个兴趣点分别计算切片来达到对程序的分析和理解.程序中某个兴趣点的程序切片不仅与在该点定义和使用的变量有关,而且与影响该变量的值的语句和谓词以及受该变量的值影响的语句和谓词有关.

定义一个切片,然后让切片去引用一个已经创建好的数组。基本语法如下:

索引1:切片引用的起始元素位

索引2:切片只引用该元素位之前的元素

例程如下:

在该方法中,我们未指定容量cap,这里的值为5是系统定义的。

在方法一中,可以用arr数组名来 *** 控数组中的元素,也可以通过slice切片来 *** 控数组中的元素。切片是直接引用数组,数组是事先存在的,程序员是可见的。

通过 make 来创建切片,基本语法如下:

make函数第三个参数cap即容量是可选的,如果一定要自己注明的话,要注意保证cap≥len。

用该方法可以 指定切片的大小(len)和容量(cap)

例程如下:

由于未赋值系统默认将元素值置为0,即:

数值类型数组:    默认值为 0

字符串数组:       默认值为 ""

bool数组:           默认值为 false

在方法二中,通过make方式创建的切片对应的数组是由make底层维护,对外不可见,即只能通过slice去访问各个元素。

定义一个切片,直接就指定具体数组,使用原理类似于make的方式。

例程如下:

(1)一般来说,就是向上类型转化过程中,派生类被截成只有基类相同的部分。

(2)derivedclassobject赋值给baseclassobject时classbase{public:inta}classderived:publicbase{public:intb}intmai{deriveddbaseb=dreturn0}

答:d存在a,b数据成员赋值给a的时候,d.b切片了,d.a赋值给了b.a 对象切片通常发生在子类对象被赋值到父类对象时,由于子类在继承父类时,通常会增加一些变量或函数,这样子类的大小比父类大,则在赋值时,子类对象拷贝到父类对象不完全,即发生切片现象.


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11537521.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-16
下一篇2023-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存