Pointers as/400 RPG指针和;地址
在AS/400上,在RPG中,有没有办法将指针地址设置为变量的值,而不是变量本身的地址 例如:Pointers as/400 RPG指针和;地址,pointers,ibm-midrange,rpgle,Pointers,Ibm Midrange,Rpgle,在AS/400上,在RPG中,有没有办法将指针地址设置为变量的值,而不是变量本身的地址 例如: variable = 'NewVariable' 其中,该值将是程序内部使用的实际变量 pointer=%addr('NewVariable')vspointer=%addr(variable) 值的地址vs变量的地址否 如果需要两个间接级别,使用C或C++。如果在服务程序中封装C++函数,将C/C++函数与RPG集成起来是非常容易的。 你想做什么,你需要一个指向变量的指针?也许有一种不同
variable = 'NewVariable'
其中,该值将是程序内部使用的实际变量
pointer=%addr('NewVariable')
vspointer=%addr(variable)
值的地址
vs变量的地址
否
如果需要两个间接级别,使用C或C++。如果在服务程序中封装C++函数,将C/C++函数与RPG集成起来是非常容易的。
你想做什么,你需要一个指向变量的指针?也许有一种不同的方法可以解决实际的业务问题。这个问题没有多大意义。因为RPG是一种编译语言,所以变量只存在于源代码中。地址仅在程序执行期间存在 变量只是在运行时给定地址的特定字节数的名称(在源代码中)
d var1 10a
d var2 10a based(myPtr)
d myPtr *
myPtr = %addr(var1);
var1 = 'Hi';
dsply var1;
var2 = 'Bye';
dsply var1;
显示
嗨
再见,当你说
variable='NewVariable'
时,这就提出了一个问题:你可能是在思考JVM或.NET语言,还是动态解释性语言。不能在运行时创建新变量*
当你说希望能够说%addr('somevalue')
而不是%addr(someVariable)
时,我不确定你想实现什么。在我能想到的任何语言中,未命名的文字常量都不能直接寻址
但是假设在该文本值的位置上有一个标签。您可以使用
d someVal s 10a inz( 'some value' )
myPtr = %addr(someVal);
您可以将
someVal
视为助记符常量。您询问了“变量的值”,但随后您将示例显示为文字常量的值。你能举个实际的例子吗?引用字面常量的“地址”似乎没有多大意义。我赞赏你试图以有意义的方式解释这个问题,也许这是唯一可能的方式。书面问题毫无意义(正如一位评论者和另一位回答者所表达的)。