美文网首页
2023-10-29 第二阶段(指针)

2023-10-29 第二阶段(指针)

作者: 护念 | 来源:发表于2023-10-28 14:30 被阅读0次

这是第二部分学习笔记

关于指针

go中的指针相比c中简单不少,他没有指针的运算,所以比较安全;用的最多的是作为引用来使用。

1. 指针关键点

其实关键的几个点记住就行了。

a := 10

ptr := &a // 取变量a的地址
b := *ptr    // 指针的变量值
*ptr = 20  // 改变指针变量的值

var p *int // int型指针
c := 30
p = &c 

// 测试
fmt.Printf("%p\n", p)
// 0xc0000a6018
fmt.Println(a, b, c)
//20 10 30

2. 对于引用类型,申明后不会分配内存没法直接使用

这点非常值得注意,也很容易出错。

错误示范

 var p *int // 这里是一个空指针<nil>

*p = 20  // 直接指针变量赋值 不行

报错如下:

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x1057602]

3. new 和 make的作用在于会分配内存

  • new的语法,它用的不多
new(T) *T  // 返回一个指针类型
  • make主要用于 map、slice、chan (返回的是类型-非指针),因为这些类型都是引用,相当于这些类型分配内存的快捷方式
a := new(int)
*a = 20

fmt.Printf("a地址:%p; a变量%v", a, *a)
//a地址:0xc0000a6018; a变量20% 

4. 空指针

var a *int
if a == nil {
  fmt.Println("a是空指针")
} else {
  fmt.Println("a是非空指针")
}

相关文章

  • 2023-10-29

    #妙笔生花创作挑战# 支撑一份再来 暖在手心里的咖啡,并不懂膨胀的压抑,拉弯树梢拿来照亮画本的月,挂进抒情...

  • 混淆知识点

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

  • C语言

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

  • 指针

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

  • 函数指针

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

  • C:函数指针的坑

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

  • C 语言指针

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

  • 二、C语言基础

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

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

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

  • 胡思乱想

    乱说乱想 关于精神分裂症恢复好坏的感想。精神分裂症的康复指针,第一阶段是症状消失自知力恢复。第二阶段是回归社会。第...

网友评论

      本文标题:2023-10-29 第二阶段(指针)

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