请问一下,怎么定义个指针数组,里面的指针都是数组指针

Velpro · 2020-09-21 14:50:22 · 2352 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2020-09-21 14:50:22 的主题,其中的信息可能已经有所发展或是发生改变。

请问一下,怎么定义个指针数组,里面的指针都是数组指针 arr := [5]uintptr arr := [5]*array 这两种编译都报错


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2352 次点击  
加入收藏 微博
6 回复  |  直到 2020-10-27 20:43:14
sanrentai
sanrentai · #1 · 5年之前

定义数组用make
make([]int,10)

avtion
avtion · #2 · 5年之前

1L指的是切片,也是常用定义切片(切片是数组的引用)的方法
授人以鱼不如授人以渔,定义数组的详细方法请阅读Go 101 - 数组、切片和映射

yykpf
yykpf · #3 · 5年之前
var ptrArr  [4]*int
a, b, c, d := 1, 2, 3, 4
arr2 := [4]int{a, b, c, d}  // 拷贝四个变量的值为函数组元素
fmt.Println("数组 arr2 :", arr2)

ptrArr = [4]*int{&a, &b, &c, &d} // 存的都是内存地址
fmt.Println("指针数组 ptrArr :", *ptrArr[0])
Velpro
Velpro · #4 · 5年之前

<pre><code>arr1 := [...]int{1,2,3,4} arr2 := [...]string{"aaa", "bbb"} // var arr [2]*array 和 var arr [2]uintptr 都不对 arr[0] = &arr1 arr[1] = &arr2</code></pre> 需要一个指针数组里存放的是数组指针

yykpf
yykpf · #5 · 5年之前
var ptrArr [2]*[]int
a := 1
arr1 := []int{a}
arr2 := []int{a}

ptrArr[0] = &arr1
ptrArr[1] = &arr2
fmt.Println(ptrArr)
fmt.Println((*ptrArr[0])[0])
__Golang__
__Golang__ · #6 · 4年之前
func Test(t *testing.T) {
    var a [2]uintptr
    arr1 := [...]int{1, 2, 3, 4}
    arr2 := [...]string{"aaa", "bbb"}
    a[0] = uintptr(unsafe.Pointer(&arr1))
    a[1] = uintptr(unsafe.Pointer(&arr2))

    for i := 0; i < len(arr1); i++ {
        fmt.Println(*(*int)(unsafe.Pointer(a[0] + uintptr(i*8))))
    }

    for i := 0; i < len(arr2); i++ {
        fmt.Println(*(*string)(unsafe.Pointer(a[1] + uintptr(i*16))))
    }
}
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传