golang中内存地址计算-根据内存地址获取下一个内存地址对应的值


package main

import (
	"fmt"
	"unsafe"
)

func main() {
	// 根据内存地址获取下一个字节内存地址对应的值
	dataList := [3]int8{11, 22, 33}

	// 1. 获取数组第一个元素的地址
	var firstDataPtr *int8 = &dataList[0]

	// 2. 转换成Pointer类型
	ptr := unsafe.Pointer(firstDataPtr)

	// 3. 转换成uIntPtr类型,然后进行内存地址的计算(即:地址加一个字节,意味着取第二个索引位置的值)
	targetAddress := uintptr(ptr) + 2

	// 4. 根据新地址,重新转换成Pointer类型
	newPtr := unsafe.Pointer(targetAddress)

	// 5. Pointer对象转换为int8指针类型
	value := (*int8)(newPtr)

	// 6. 根据指针获取值
	fmt.Println("最终结果为:", *value)

}

  


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM