指针

作者: 酷走天涯 | 来源:发表于2018-12-24 09:20 被阅读1次

本节学习目标

  • 1.什么是指针
  • 2.指针的零值
  • 3.解引用的用法
  • 4.不要使用指针传递数组,应该使用切片

什么是指针?

指针是一种存储变量内存地址(Memory Address)的变量

例如变量 a 的值是123 ,123存储的内存地址为0x123456,则我们定义一个指针类型的变量b,让它的值为0x123456,那么我们去这块物理内存的值时,就能得到123

下面我们用代码演示一下上面的过程

package main

import "fmt"

func main(){
   a := 124
   fmt.Println(&a) // 查看a的地址
 }
image.png

下面我们定义一个指针类型

package main

import "fmt"

func main(){
   a := 124
   fmt.Println(&a) // 查看a的地址
   var b *int = &a
   fmt.Println(b)
 }
image.png

接下来 我们取地址下面的值

package main

import "fmt"

func main(){
   a := 124
   fmt.Println(&a) // 查看a的地址
   var b *int = &a
   fmt.Printf("地址:%x,对应的值为:%d/n",b,*b)
 }

image.png

指针的零值

   var b *int
   fmt.Println(*b)
image.png

指针b执行的地址 是nil,这个时候通过*b去取值,会发生错误如上图,那么我们正确的操作应该怎么办?

package main

import "fmt"

func main(){
   var b *int
   if(b==nil){
       fmt.Println("b是一个空指针")
   }else{
       fmt.Println(*b)
   }
 }
image.png

解引用

package main  
import (  
    "fmt"
)

func main() {  
    b := 255
    a := &b
    fmt.Println(a)
    fmt.Println(*a)
}
image.png

怎么通过指针修改b的值呢?

package main

import "fmt"

func main(){
    b := 255
    a := &b
    fmt.Println(a)
    fmt.Println(*a)
    *a += 5
    fmt.Println(b)
 }
image.png

不用向数组传递数组的指针,应该使用切片

import "fmt"

func main(){
   array := [3]int{1,2,3}
   change(&array)
   fmt.Println(array)
 }

func change(array *[3]int){
    array[1] = 10
}
image.png

注意array[1] = 10,为什么不写成 array[1] = 10?
答:a[x] 是 (
a)[x],当然

我们看一种更加优雅的写法

import "fmt"
func main(){
   array := [3]int{1,2,3}
   change(array[:])
   fmt.Println(array)
 }
func change(array []int){
    array[1] = 10
}
image.png

相关文章

  • 混淆知识点

    1、指针数组&数组指针、常量指针&指针常量、函数指针&指针函数 数组指针&指针数组 数组指针的定义 int (*p...

  • C语言

    C 指针、指针变量、函数指针、指针函数、指针数组、数组指针、C 数组

  • 指针

    普通指针指针的指针 数组指针 函数指针

  • 函数指针

    概念: 指针函数, 函数指针, 指针数组, 数组指针, 指向数组的指针, 指向函数指针数组的指针。

  • C:函数指针的坑

    关于该死的函数指针和指针函数 先来个目录 常量指针、指针常量 数组指针、指针数组 函数指针、指针函数 1、先看第一...

  • C 语言指针

    指针类型:指针的读取长度,指针的读取方向(大小端) 空指针,无类型指针,野指针 常量指针,指向常量的指针 http...

  • 二、C语言基础

    A、指针 指针的概念:指针变量 和 指针 的区别 ?答:指针变量是指针的标记,也可以通过指针变量的标记操作指针内存...

  • 王道程序员求职宝典(十一)指针与引用,树

    指针与引用 指针声明typedef别名类型检查void*指针指向指针的指针函数指针typedef简化函数指针定义初...

  • NDK02

    指针 指针概念 1 .指针变量和指针的区别?答: 指针变量是定义指针的标记,指针就是指向的内存地址。2 .函数指针...

  • 12 C指针

    1、指针定义 2、指针进阶 3、指针使用 4、多级指针 4、指针和数组 5、指针和字符串 6、高级指针之和指向函数的指针

网友评论

      本文标题:指针

      本文链接:https://www.haomeiwen.com/subject/jhqyzftx.html