Add all the A tasks
This commit is contained in:
parent
2dd7375f96
commit
051504d65b
1608 changed files with 18584 additions and 0 deletions
16
Task/Address-of-a-variable/Go/address-of-a-variable-1.go
Normal file
16
Task/Address-of-a-variable/Go/address-of-a-variable-1.go
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
func main() {
|
||||
myVar := 3.14
|
||||
myPointer := &myVar
|
||||
fmt.Println(myPointer)
|
||||
fmt.Printf("%p\n", myPointer)
|
||||
|
||||
addr := int64(uintptr(unsafe.Pointer(myPointer)))
|
||||
fmt.Printf("0x%x\n", addr)
|
||||
}
|
||||
29
Task/Address-of-a-variable/Go/address-of-a-variable-2.go
Normal file
29
Task/Address-of-a-variable/Go/address-of-a-variable-2.go
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
== Get ==
|
||||
|
||||
There are at least three ways to get the address of a variable in IWBASIC. The first is to use the address of operator:
|
||||
|
||||
DEF X:INT
|
||||
PRINT &X
|
||||
'This will print in the console window (after OPENCONSOLE is issued.)
|
||||
'To Print in an open window the appropriate Window variable is specified, e.g., PRINT Win,&X.
|
||||
|
||||
The second is to use a pointer:
|
||||
|
||||
DEF X:INT
|
||||
DEF pPointer:POINTER
|
||||
pPointer=X
|
||||
|
||||
The third is to use the Windows API function Lstrcpy. That is done in the same way as the Creative Basic example;
|
||||
however, the function would be declared as follows: DECLARE IMPORT,Lstrcpy(P1:POINTER,P2:POINTER),INT.
|
||||
|
||||
== Set ==
|
||||
|
||||
It appears to the author that the closest one can come to being able to assign an address to a variable is to set
|
||||
which bytes will be used to store a variable in a block of reserved memory:
|
||||
|
||||
DEF pMem as POINTER
|
||||
pMem = NEW(CHAR,1000) : 'Get 1000 bytes to play with
|
||||
#<STRING>pMem = "Copy a string into memory"
|
||||
pMem += 100
|
||||
#<UINT>pMem = 34234: 'Use bytes 100-103 to store a UINT
|
||||
DELETE pMem
|
||||
3
Task/Address-of-a-variable/Go/address-of-a-variable-3.go
Normal file
3
Task/Address-of-a-variable/Go/address-of-a-variable-3.go
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
var =: 52 NB. Any variable (including data, functions, operators etc)
|
||||
var_addr =: 15!:6<'var' NB. Get address
|
||||
new_var =: 15!:7 var_addr NB. Set address
|
||||
Loading…
Add table
Add a link
Reference in a new issue