gpt4 book ai didi

abap - ABAP中的字段符号和数据引用概念

转载 作者:行者123 更新时间:2023-12-04 09:36:37 26 4
gpt4 key购买 nike

如果将ABAP字段符号和数据引用与C中的指针进行比较,则会观察到:

在C语言中,假设我们声明一个变量“var”,类型为“integer”,默认值为“5”。

变量“var”将存储在内存中的某些位置,并且说保存此变量的内存地址为“1000”。

现在,我们定义一个指针“ptr”,并将该指针分配给我们的变量。

因此,“ptr”将为“1000”,“* ptr”将为5。

让我们比较一下ABAP中的上述情况。

在这里,我们声明一个字段符号“FS”,并将其分配给变量“var”。

现在我的问题是“FS”的含义是什么?我在互联网上进行了严格的搜索,但发现许多ABAP顾问认为FS拥有变量的地址,即1000。但这是错误的。在调试时,我发现fs仅占5。因此fs(在ABAP中)等效于* ptr(在C中)。如果我的理解是错误的,请纠正我。

现在,我们声明一个数据引用“dref”和另一个字段符号“fsym”,在创建数据引用之后,我们将其分配给field symbol。现在,我们可以对该字段符号进行操作。因此,数据引用和字段符号之间的区别是:-

首先使用字段符号,我们将声明一个变量并将其分配给字段符号。

如果是数据引用,我们首先创建一个数据引用,然后将其分配给字段符号。

那么数据引用有什么用呢?我们也可以通过字段符号实现相同的功能。

最佳答案

字段符号很像一个指针,但是只能以解引用的形式访问它。换句话说,它会在内部保存分配给它的变量的内存地址,但不允许您看到内存地址,只能看到它指向的变量中存储的数据。可以证明这一点,因为如果更改指向内部表行的字段符号的内容,则会看到更改将直接在该行中进行。

数据引用的行为就像一个简单的指针,只是您不能像C中那样增加或减少内存地址(ptr++,ptr--等)。它与字段符号不同,因为您可以比较两个数据引用以检查它们是否指向内存中完全相同的位置。比较两个字段符号将是一个简单的值比较。另一个区别是,可以使用CREATE DATA命令通过创建数据引用来动态分配内存。字段符号只能分配给已经分配的变量。

关于abap - ABAP中的字段符号和数据引用概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12402564/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com