25 lines
		
	
	
		
			367 B
		
	
	
	
		
			V
		
	
	
			
		
		
	
	
			25 lines
		
	
	
		
			367 B
		
	
	
	
		
			V
		
	
	
 | 
						|
fn test_pointer_arithmetic() {
 | 
						|
	arr := [1,2,3,4]
 | 
						|
	unsafe {
 | 
						|
		mut parr := *int(arr.data)
 | 
						|
		parr += 1
 | 
						|
		assert 2 == *parr
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
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
 | 
						|
}
 |