1 回答
TA贡献1909条经验 获得超7个赞
要设置matrix[0][0]
为 3,使用指针取消引用:
(*matrix)[0][0] = 3
试试这个:
package main
import "fmt"
func main() {
matrix := [][]int{
{1, 0, 0},
{1, 0, 0},
{0, 1, 1},
}
fmt.Println("Before")
printMatrix(matrix)
changeMatrixByReference(&matrix)
fmt.Println("After")
printMatrix(matrix)
}
func changeMatrixByReference(matrix *[][]int) {
(*matrix)[0][0] = 3
}
func printMatrix(matrix [][]int) {
for i := 0; i < len(matrix); i++ {
for j := 0; j < len(matrix[0]); j++ {
fmt.Printf("%d", matrix[i][j])
}
fmt.Println("")
}
}
只要您不修改切片头(例如添加元素时),就不需要指针,通过索引访问的元素将存储在支持数组中,切片头为您保存一个指针:
尝试这个:
package main
import "fmt"
func main() {
matrix := [][]int{
{1, 0, 0},
{1, 0, 0},
{0, 1, 1},
}
fmt.Println("Before")
printMatrix(matrix)
changeMatrixByReference(matrix)
fmt.Println("After")
printMatrix(matrix)
}
func changeMatrixByReference(matrix [][]int) {
matrix[0][0] = 3
}
func printMatrix(matrix [][]int) {
for i := 0; i < len(matrix); i++ {
for j := 0; j < len(matrix[0]); j++ {
fmt.Printf("%d", matrix[i][j])
}
fmt.Println("")
}
}
输出:
Before
100
100
011
After
300
100
011
- 1 回答
- 0 关注
- 119 浏览
添加回答
举报