} C.fill_2d_array((**C.char)(unsafe.Pointer(&dirs[0][0])), C.int(16)) fmt.Println(dirs) } 需要注意的是,不能将Slice像这样转换: (*C.char)(unsafe.Pointer(&dir)),因为Slice在Go中实际上不是一个完全意义上的数组,它只是一种数据结构,带有若干头部,见http://blog.golang.org/go-slices...
需要注意的是,不能将Slice像这样转换: (*C.char)(unsafe.Pointer(&dir)),因为Slice在Go中实际上不是一个完全意义上的数组,它只是一种数据结构,带有若干头部,见,如果直接&dir,那相当于把dir这个数据结构的地址处的数据强制转换为*C.char,这样导致的后果完全不可期,运行时core掉是再正常不过的后果。 这里有...
数组类型表示为:[大小]T,比如[5]int表示拥有5个int元素的数组。如果将数组作为函数的参数类型,则在函数调用时该参数将发生数据复制。...连续的内存分配:数组的所有元素在内存中是连续分配的,这有助于快速访问元素。值类型:数组是值类型,它们在传递给函数时会被复制,
} C.fill_2d_array((**C.char)(unsafe.Pointer(&dirs[0][0])), C.int(16)) fmt.Println(dirs) } 需要注意的是,不能将Slice像这样转换: (*C.char)(unsafe.Pointer(&dir)),因为Slice在Go中实际上不是一个完全意义上的数组,它只是一种数据结构,带有若干头部,见http://blog.golang.org/go-slices...
C.fill_2d_array((**C.char)(unsafe.Pointer(&dirs[0][0])), C.int(16)) fmt.Println(dirs) } 需要注意的是,不能将Slice像这样转换: (*C.char)(unsafe.Pointer(&dir)),因为Slice在Go中实际上不是一个完全意义上的数组,它只是一种数据结构,带有若干头部,见http://blog.golang.org/go-slices-...