一、数组做函数参数   

  • 数组做函数参数:在传递过程中,传递的是实参中每个元素的拷贝,如果实参数组较大,效率比较低
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]
}

 

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐