uintptr is an integer type holding a pointer's bit pattern, used for C interop but not for direct memory access.
uintptr is an integer type large enough to hold the bit pattern of any pointer, used primarily for passing pointer addresses to C functions via cgo. It is not a pointer itself and cannot be dereferenced; it is an integer representation of a memory address.
import "unsafe"
var p *int
addr := uintptr(unsafe.Pointer(p))
uintptr is a special number that stores a memory address as a plain integer. You use it when you need to pass a Go memory location to C code, but you cannot use it to access data directly like a normal pointer. Think of it as writing down a house address on a piece of paper; you have the location, but you cannot walk into the house just by holding the paper.