首页 > 其他 > 详细

指针的偏移运算

时间:2019-12-19 21:23:08      阅读:86      评论:0      收藏:0      [点我收藏+]
package main

import (
    "fmt"
    "unsafe"
)

type W struct {
    a byte
    b int32
    c int32
}

func main() {
    var w = W{b: 32, c: 64}
    t := unsafe.Pointer(&w)                                             //unsafe.Pointer可以和任何指针类型互相转换
    var c = (*int32)(unsafe.Pointer(uintptr(t) + unsafe.Offsetof(w.a))) //uintptr是唯一可以用来运算的指针,通过uintptr偏移来获取各个元素在内存中的位置,偏移a的位移,就拿到了w.a的指针
    *c = 24
    fmt.Println(w)
}




指针的偏移运算

原文:https://www.cnblogs.com/hualou/p/12069812.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!