Pointers and references: Difference between revisions
Content added Content deleted
m (→{{header|Perl}}: some rewording) |
(Add Nimrod) |
||
Line 649: | Line 649: | ||
RETURN sum; |
RETURN sum; |
||
END Sum;</lang> |
END Sum;</lang> |
||
=={{header|Nimrod}}== |
|||
There are two types of pointers in Nimrod. Safe, garbage-collected references and unsafe pointers. |
|||
Create a safe reference: |
|||
<lang nimrod>type Foo = ref object |
|||
x, y: float |
|||
var f: Foo |
|||
new f</lang> |
|||
Accessing the reference: |
|||
<lang nimrod>echo f[]</lang> |
|||
When accessing values the dereference operator [] can be left out: |
|||
<lang nimrod>echo f[].x |
|||
f[].y = 12 |
|||
echo f.y |
|||
f.x = 13.5</lang> |
|||
Create an (unsafe) pointer to an int variable: |
|||
<lang nimrod>var x = 3 |
|||
var p = addr x</lang> |
|||
Access the integer variable through the pointer: |
|||
<lang nimrod>echo p[] |
|||
p[] = 42</lang> |
|||
Change the pointer to refer to another object: |
|||
<lang nimrod>var y = 12 |
|||
p = addr y</lang> |
|||
Change the pointer to not point to any object: |
|||
<lang nimrod>p = nil</lang> |
|||
=={{header|OCaml}}== |
=={{header|OCaml}}== |