Pointers and references: Difference between revisions
Content added Content deleted
(Add Ecstasy example) |
(PascalABC.NET) |
||
Line 1,675: | Line 1,675: | ||
foo(bar); |
foo(bar); |
||
end.</syntaxhighlight> |
end.</syntaxhighlight> |
||
=={{header|PascalABC.NET}}== |
|||
<syntaxhighlight lang="delphi"> |
|||
type MyClass = class |
|||
public |
|||
x: integer := 555; |
|||
end; |
|||
begin |
|||
var pi: ^integer; |
|||
New(pi); |
|||
pi^ := 1023; |
|||
var pb: ^byte; |
|||
//pb := pi; // compiler error |
|||
var p: pointer; |
|||
p := pi; |
|||
pb := p; |
|||
Print(pb^); // byte representation of integer |
|||
loop 3 do |
|||
begin |
|||
pb := pointer(integer(pb)+1); // analog of pb++ |
|||
Print(pb^); |
|||
end; |
|||
Println; |
|||
var obj := new MyClass; // obj is a reference to object |
|||
// All regferences in .NET are under control of garbage collection |
|||
Println(obj); |
|||
var obj1 := obj; // another reference to the same object |
|||
obj1.x := 666; |
|||
Println(obj); |
|||
obj := nil; // zero reference |
|||
end. |
|||
</syntaxhighlight> |
|||
{{out}} |
|||
<pre> |
|||
255 3 0 0 |
|||
(555) |
|||
(666) |
|||
</pre> |
|||
=={{header|Perl}}== |
=={{header|Perl}}== |