Pointers and references: Difference between revisions

Content added Content deleted
(Added EchoLisp)
(Added FreeBASIC)
Line 580:
 
There are not other possible operations on Fortran "pointers" (at least before Fortran 2003).
 
=={{header|FreeBASIC}}==
<lang freebasic>' FB 1.05.0 Win64
 
Type Cat
name As String
age As Integer
End Type
 
Type CatInfoType As Sub (As Cat Ptr)
 
Sub printCatInfo(c As Cat Ptr)
Print "Name "; c->name, "Age"; c-> age
Print
End Sub
 
' create Cat object on heap and store a pointer to it
Dim c As Cat Ptr = New Cat
 
' set fields using the pointer and the "crow's foot" operator
c->name = "Fluffy"
c->age = 9
 
' print them out through a procedure pointer
Dim cit As CatInfoType = ProcPtr(printCatInfo)
cit(c)
 
Delete c
c = 0
 
Dim i As Integer = 3
' create an integer pointer variable and set it to the address of 'i'
Dim pi As Integer Ptr = @i
 
'change the variable through the pointer
*pi = 4
 
'print out the result
print "i ="; *pi
 
'create a reference to the variable i
Dim ByRef As Integer j = i
 
' set j (and hence i) to a new value
j = 5
 
' print them out
Print "i ="; i, "j ="; j
Sleep</lang>
 
{{out}}
<pre>
Name Fluffy Age 9
 
i = 4
i = 5 j = 5
</pre>
 
=={{header|Go}}==
Go has pointers but no pointer arithmetic. In general it disallows many operations that are common in other languages but have proven to be common sources of programming errors.