zoukankan      html  css  js  c++  java
  • 22_数组做函数参数

    数组的弊端:
           1、固定数组大小
           2、值传递,赋值整个数组,占用内存

    3、b:=[...]int{1,2,3}//不指定数组大小定义数组并初始化
    因为数组做函数参数是值传递(c语言中是引用传递),所以使用函数指针作为函数参数比较高效

    例如:
    package main
    
    
    import (
    	"fmt"
    	"math/rand"
    	"time"
    )
    
    
    //冒泡排序:切片,引用传递
    func Bubble(a []int) {
    
    
    	for i := 0; i < len(a); i++ {
    		for j := 0; j < len(a)-i-1; j++ {
    			if a[j] > a[j+1] {
    				a[j], a[j+1] = a[j+1], a[j]
    			}
    		}
    	}
    	fmt.Println("排序后数组为:", a)
    }
    
    
    //数组,值传递,需要指明数组大小
    func Bubble2(a [10]int) {
    
    
    	for i := 0; i < len(a); i++ {
    		for j := 0; j < len(a)-i-1; j++ {
    			if a[j] > a[j+1] {
    				a[j], a[j+1] = a[j+1], a[j]
    			}
    		}
    	}
    	fmt.Println("排序后数组为:", a)
    }
    
    
    //引用传递
    func Bubble1(a *[10]int) {
    
    
    	for i := 0; i < len(a); i++ {
    		for j := 0; j < len(a)-i-1; j++ {
    			if a[j] > a[j+1] {
    				a[j], a[j+1] = a[j+1], a[j]
    			}
    		}
    	}
    	fmt.Println("排序后数组为:", a)
    }
    
    
    func main() {
    	rand.Seed(time.Now().UnixNano())
    
    
    	var a [10]int
    	for i := 0; i < len(a); i++ {
    		a[i] = rand.Intn(100)
    	}
    	fmt.Println("原数组为:", a)
    	Bubble2(a)
    	fmt.Println("a变为数组为:", a)
    	//切片,属于引用传递
    	var b []int = []int{8, 2, 3, 4, 5}
    	Bubble(b)
    	fmt.Println("b变为数组为:", b)
    
    
    	//数组指针作为参数
    	Bubble1(&a)
    	fmt.Println("a1变为数组为:", a) //a1变为数组为: [1 25 27 35 37 73 75 86 92 99]
    
    
    }

    运行结果:

                                      

    每天的价值就是不停息的前进!!!
  • 相关阅读:
    剖析并利用Visual Studio Code在Mac上编译、调试c#程序【转】
    算法题—百灯判熄
    聪明的情侣算法题
    C#中&与&&的区别
    C# 日期格式精确到毫秒 【转】
    C#关于窗体的keysdown事件,无法获取到焦点
    百度,迅雷,华为,阿里巴巴笔试面试
    对 Linux 新手非常有用的 20 个命令
    阿里面试题2015
    Ant工具 ant的安装与配置 ant作用
  • 原文地址:https://www.cnblogs.com/zhaopp/p/11439736.html
Copyright © 2011-2022 走看看