go语言 数组做函数参数和数组指针做函数参数
一、数组做函数参数 数组做函数参数:在传递过程中,传递的是实参中每个元素的拷贝,如果实参数组较大,效率比较低package mainimport "fmt"//数组作为函数的参数,是进行值传递//实参数组的每一个元素,在传递的时候,都给形参拷贝一份,因此当实参数组较大,效率就比较低//简而言之:形参数组是实参数组的复制品func transferAndModify(a...
·
一、数组做函数参数
- 数组做函数参数:在传递过程中,传递的是实参中每个元素的拷贝,如果实参数组较大,效率比较低
package main
import "fmt"
//数组作为函数的参数,是进行值传递
//实参数组的每一个元素,在传递的时候,都给形参拷贝一份,因此当实参数组较大,效率就比较低
//简而言之:形参数组是实参数组的复制品
func transferAndModify(arr [5]int) {
arr[0] = 111
fmt.Println("modify:arr=", arr) //modify:arr= [111 5 3 9 10]
}
func main() {
// 定义一个数组
arr := [5]int{1, 5, 3, 9, 10}
// 定义一个函数
transferAndModify(arr) // 值传递
fmt.Println("main:arr=", arr) //main:arr= [1 5 3 9 10]
}
二、数组指针做函数的参数
- 数组的指针做函数的参数:传递实参的内存地址,指向实参的内存
package main
import "fmt"
//p指向实参数组arr,p就是数组arr的指针
//*p代表指针所指向的内存,就是实参arr
func transferAndModify(p *[5]int) {
(*p)[0] = 111
fmt.Println("transferAndModify:*p=", *p) //transferAndModify:*p= [111 5 3 9 10]
}
func main() {
// 定义一个数组
arr := [5]int{1, 5, 3, 9, 10}
// 定义一个函数
transferAndModify(&arr) //地址传递
fmt.Println("main:arr=", arr) //main:arr= [111 5 3 9 10]
}
更多推荐


所有评论(0)