demo.go(切片、陣列作為函式的形參):
package main
import "fmt"
// 值傳遞:改變形參的值,並不會改變實參的值。(例如:陣列、結構體)
// 陣列作為函式的引數,是值傳遞。 修改形參不會改變實參的值。(可以通過返回值來覆蓋(修改)實參的值)
// 切片的資料存放在記憶體的堆區。 陣列的資料(函式的區域性變數)存放在記憶體的棧區
func main()
test(slice)
fmt.printf("%p \n", slice) // 0xc000072030
fmt.println(slice) // [111 1 2 3 4] (修改形參會影響到實參)
}// 切片作為函式的引數(位址傳遞) (切片變數名本身就是乙個位址)
func test(s int)
Go切片作為函式引數時的一些思考
go語言中的切片事實上就是是乙個結構體,其執行時結構如下 type slice struct這一點非常重要,這也就意味著,將切片作為函式引數時,其傳遞機制與結構體傳遞機制一樣,都是值傳遞,也即傳遞的是原切片的拷貝。另外乙個非常重要的點就是,切片結構體中的array是乙個指標,意味著array的值是底...
陣列作為函式引數
一 一維陣列名作函式引數 用陣列名作函式引數,應該在主調函式和被調函式分別定義陣列,例如 void main 在被呼叫函式中宣告了形引數組的大小為10,但在實際中,指定其大小是不起任何作用的,因為c語言編譯對形引數組大小不做檢查,只將實參陣列的首元素位址傳給形引數組。形引數組可以不指定大小,在定義陣...
陣列作為函式引數
陣列元素的作用與變數相當,一般來說,凡是變數可以出現的地方,都可以用陣列元素代替。陣列名也可以做實參和形參,傳遞的是陣列第乙個元素的位址。陣列元素可以用作函式實參,但是不能用作形參,因為形參是在函式被呼叫時臨時分配儲存單元的,不可能為乙個陣列元素單獨分配儲存單元 陣列是乙個整體,在記憶體中佔連續的一...