zoukankan      html  css  js  c++  java
  • 67_Go基础_1_34 指针数组,数组指针

     1 package main
     2 
     3 import "fmt"
     4 
     5 func main() {
     6     /*
     7         数组指针:首先是一个指针,一个数组的地址。
     8             *[4]Type
     9 
    10         指针数组:首先是一个数组,存储的数据类型是指针
    11             [4]*Type
    12 
    13 
    14             *[5]float64,指针,一个存储了5个浮点类型数据的数组的指针
    15             *[3]string,指针,数组的指针,存储了3个字符串
    16             [3]*string,数组,存储了3个字符串的指针地址的数组
    17             [5]*float64,数组,存储了5个浮点数据的地址的数组
    18             *[5]*float64,指针,一个数组的指针,存储了5个float类型的数据的指针地址的数组的指针
    19             *[3]*string,指针,存储了3个字符串的指针地址的数组的指针
    20             **[4]string,指针,存储了4个字符串数据的数组的指针的指针
    21             **[4]*string,指针,存储了4个字符串的指针地址的数组,的指针的指针
    22     */
    23 
    24     // 1.创建一个普通的数组
    25     arr1 := [4]int{1, 2, 3, 4}
    26     fmt.Println(arr1)
    27 
    28     // 2.创建一个指针,存储该数组的地址--->数组指针
    29     var p1 *[4]int
    30     p1 = &arr1
    31     fmt.Println(p1)         // &[1 2 3 4]
    32     fmt.Printf("%p\n", p1)  // 数组arr1的地址  0xc0000101e0
    33     fmt.Printf("%p\n", &p1) // p1指针自己的地址 0xc000006030
    34 
    35     // 3.根据数组指针,操作数组
    36     (*p1)[0] = 100
    37     fmt.Println(arr1) // [100 2 3 4]
    38 
    39     p1[0] = 200       // 简化写法
    40     fmt.Println(arr1) // [200 2 3 4]
    41 
    42     // 4.指针数组
    43     a := 1
    44     b := 2
    45     c := 3
    46     d := 4
    47     arr2 := [4]int{a, b, c, d}
    48     arr3 := [4]*int{&a, &b, &c, &d}
    49     fmt.Println(arr2) // [1 2 3 4]
    50     fmt.Println(arr3) // [0xc000014100 0xc000014108 0xc000014110 0xc000014118]
    51     arr2[0] = 100
    52     fmt.Println(arr2) // [100 2 3 4]
    53     fmt.Println(a)    // 1 并没有改变a的值
    54     *arr3[0] = 200
    55     fmt.Println(arr3) // [0xc000014100 0xc000014108 0xc000014110 0xc000014118]
    56     fmt.Println(a)    // 200 改变的a的值
    57 
    58     b = 1000
    59     fmt.Println(arr2) // [100 2 3 4]
    60     fmt.Println(arr3) // [0xc000014100 0xc000014108 0xc000014110 0xc000014118]
    61     for i := 0; i < len(arr3); i++ {
    62         fmt.Println(*arr3[i]) // 200 1000 3 4
    63     }
    64 }
  • 相关阅读:
    Java并发编程:线程池的使用
    多线程笔记
    《Java源码解析》之NIO的Selector机制(Part1:Selector.open())
    git reset --hard 和 git reset --sort区别
    java 泛型
    01springboot简介
    Selector 实现原理
    -Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variable
    activemq使用
    8年javascript总结
  • 原文地址:https://www.cnblogs.com/luwei0915/p/15630007.html
Copyright © 2011-2022 走看看