数组指针&指针数组

package main

import "fmt"

func main() {
    /*
        数组指针: 首先是一个指针,一个数组的地址
            存储的是数组的地址
             *[4]int

        指针数组:
             首先是一个数组,存储的数据类型是指针
             [4]*type


             *[5]float64    指针,一个存储了5个浮点型数据的数组的指针
             *[3]string     指针,一个存储了3个字符串
             [3]*string     数组,存储了3个字符串的指针地址
             [5]*float64    数组,存储了5个浮点型的数组地址
             *[5]*float64   指针,一个数组的指针,数组中存储5个float64的数据的地址
             *[3]*string    指针,一个数组指针,存储了3个字符串地址
             **[4]sting     指针,存储了4个字符串数据的数组的指针的指针
             **[4]*string   指针,存储了4个字符串的数据的地址的数组,的指针的指针
             

    */

    // 1.创建一个普通的数组
    arr1 := [4]int{1, 2, 3, 4}
    fmt.Println(arr1)

    //2. 创建一个指针,存储该数组的地址====> 数组指针
    var p1 *[4]int
    p1 = &arr1
    fmt.Println(p1)
    fmt.Printf("%p\n", p1)
    //3. 根据数组指针,操作数组
    (*p1)[0] = 100 // 简写 p1[0]=100
    fmt.Println(arr1)

    // 4. 指针数组
    a := 1
    b := 2
    c := 3
    d := 4
    arr2 := [4]int{a, b, c, d}
    arr3 := [4]*int{&a, &b, &c, &d}
    fmt.Println(arr2)
    fmt.Println(arr3)
    arr2[0] = 200
    fmt.Println(a)
    *arr3[0] = 300
    for i := 0; i < len(arr3); i++ {
        fmt.Println(*arr3[i])
    }
    fmt.Println(a)
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注