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