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]
    
    
    }

    运行结果:

                                      

    每天的价值就是不停息的前进!!!
  • 相关阅读:
    Solaris 11 system package 安装与更新(如:assembler)
    JS实现页面内跳转
    使用Eclipse进行嵌入式软件开发
    Eclipse下C++标准库报错::mbstate_t has not been declared
    嵌入式ARM开发环境搭建
    CCS内存数据转成图片
    RESET
    Android 圆角研究
    Java 重写必须满足的条件
    android 社会化分享集成
  • 原文地址:https://www.cnblogs.com/zhaopp/p/11439736.html
Copyright © 2011-2022 走看看