• 指针


    进制转换

    二进制 10  11  100    ...  1001    1010    1011    1100                                                          
    十进制 0 1 2 3 4  ... 9 10 11 12  15  16 17 18 25 29      
    十六进制 0 1 2 3 4  ... 9 A B C F 0x10 0x11 0x12 0x19 0x1A      

    指针

    /*
    指针就是地址
    每个页上都有指针和页数据 指针其实就是记录数据的 数据头,就像每个屋子都有一个门牌号一样。 指针可以套指针,别管怎么指,最终还会到最初的页数据那去。 如果是int 类型的数据 那么这个指针就是 *int 类型的指针。
    */
     1 /*
     2 &value 对数值 取地址
     3 *ptr   对地址 取数值
     4 
     5 */
     6 package main
     7 
     8 import (
     9  "fmt"
    10 )
    11 
    12 func main(){
    13  var a int = 123
    14  fmt.Printf("a的类型是%T
    ",a) //int
    15  fmt.Printf("a的数值是%v
    ",a) //123
    16  fmt.Printf("a的地址是%p
    ",&a) //0x...
    17 
    18 
    19 
    20  //修改a地址
    21  //&a地址存在 apointer变量中   【这个代表 对数值取地址】
    22  apointer :=&a
    23  fmt.Printf("apinrter的类型是%T
    ",apointer) //*int
    24 
    25 //将456丢入a的地址中   【这个代表 对地址 取数值】
    26 *apointer =456
    27 fmt.Println(*apointer)  //456
    28 //a也变成了456
    29  fmt.Println(a)  //456
    30  }
     1 package main
     2 
     3 import "fmt"
     4 
     5 func main(){
     6  var x = 456
     7 
     8  //定义整型指针(存储整型数据的地址),默认赋值为空nil
     9  var xx *int
    10 
    11  //xx指向x的地址
    12  xx = &x
    13 
    14  //将xx指向的地址中的数值 改为 789
    15  *xx = 789
    16 
    17  fmt.Println(*xx)         //xx地址中的数值是 789
    18  fmt.Println(&x)          //x的地址内容是0xc00004c080
    19  fmt.Println(x)            //x的数值是789
    20  fmt.Println(*xx==x)    //xx地址中的数值= x的数值  true
    21  fmt.Println(xx ==&x)    //xx指针变量的数值= x地址的内容。true
    22 }

    指针的指针

    /*
    专门一个地址里 存储的内容是 另外一个指针的地址。
    那么这个地址就叫指针的指针。
    
    比如
    a <-- b的值是a的指针<-----C的值是b的指针
    *c  = 取c的数值 也就是b的指针地址
    **c = 取c的数值 在继续取b的数值  也就是a的值。
    
    
     */
     1 package main
     2 
     3 import "fmt"
     4 
     5 func main(){
     6     var x = 123
     7     var p *int = &x  //x的指针给p        
     8     pp := &p         //在把p的指针给pp  <----- 指针的指针
     9 
    10     fmt.Println(pp)  //0xc000006028
    11 
    12     fmt.Println(*p)             //123
    13     fmt.Println(*(*pp))        //123
    14     fmt.Println(**pp)        //123
    15 
    16 
    17 }
  • 相关阅读:
    flask路由(2)
    flask(1)
    了解websocket协议
    理解python的queue&deque
    oracle sqlplus中使用spool生成美化的html网页
    Oracle自动生成html格式awr的报告
    oracle data guard备库备份恢复
    【翻译自mos文章】DBA_JOBS 和 DBA_JOBS_RUNNING 不同的结果的解释
    ORA-23421: job number 225 is not a job in the job queue
    ORA-23421: job number 225 is not a job in the job queue
  • 原文地址:https://www.cnblogs.com/chaoyangxu/p/11842187.html
Copyright © 2020-2023  润新知