v/vlib/compiler/tests/pointers_test.v

28 lines
422 B
V
Raw Normal View History

2019-11-11 16:43:22 +01:00
fn test_pointer_arithmetic() {
arr := [1,2,3,4]
unsafe {
mut parr := *int(arr.data)
parr += 1
assert 2 == *parr
2019-11-11 21:39:16 +01:00
parr++
assert 3 == *parr
assert *(parr + 1) == 4
2019-11-11 16:43:22 +01:00
}
}
fn test_multi_level_pointer_dereferencing() {
n := 100
pn := &n
ppn := &pn
unsafe {
mut pppn := &ppn
***pppn = 300
pppa := ***int(pppn)
assert 300 == ***pppa
}
assert n == 300 // updated by the unsafe pointer manipulation
}