package main

/*
%T 类型占位符
%v 值占位符
%p 地址(指针)占位符,只有地址才能替换%p
&value 对值取地址
*addr 对地址取值
**int 指向int型指针的指针
作用:函数传参时,传递指针叫引用传递,值传递是拷贝式的,对被传参数的修改是不会改变本体的,想要改变本体只能是引用传递
*/ import "fmt" //指针就是地址
//&value 对值取地址
//*ptr 对地址取值
func main021() { //声明变量a时,系统开辟了一块内存【地址】,里面存的【值】是123
var a int = 123
fmt.Printf("a的类型是%T\n", a)//int
fmt.Printf("a的值是%v\n", a)//123
fmt.Printf("a的地址是%p\n", &a)//0x... //&a取变量a的地址
aPointer := &a
fmt.Printf("aPointer的类型是%T\n",aPointer)//*int //将aPointer指向的地址中的值修改为456
*aPointer = 456
fmt.Println("*aPointer=",*aPointer)//456
//a的值就变成了456
fmt.Println("a=",a)
} //先定义原始变量,修改其指针中的值,会直接改变原变量
//指针如果没有重新赋值,永远指向同一块地址
func main022() { //系统给x分配了内存
var x = 456
fmt.Println(x)//456 //定义整型指针(存储整型数据的地址)
//默认赋值为空<nil>
var xPtr *int
fmt.Println("xPtr=", xPtr)//nil //aPtr指向x的地址
xPtr = &x //将xPtr指向的地址中的值修改为789
*xPtr = 789 fmt.Println(x) //789
fmt.Println(xPtr) //0xc042052080
fmt.Println(&x) //0xc042052080
fmt.Println(*xPtr) //789
fmt.Println(*xPtr == x) //true
fmt.Println(xPtr == &x) //true var y = 456
*xPtr = y
fmt.Println(x) //456
fmt.Println(xPtr) //没有变
fmt.Println(&x) //没有变
fmt.Println(*xPtr) //456
fmt.Println(*xPtr == y) //true
fmt.Println(x == y) //true
fmt.Println(&x == &y) //false
fmt.Println(xPtr == &y) //false
fmt.Printf("y的地址是%p\n",&y) fmt.Println("----------")
//xPtr指向y的地址
xPtr = &y
y = 789
fmt.Println(x) //456
fmt.Println(y) //789
fmt.Println(*xPtr) //789
fmt.Println(&x == xPtr) //false
} //指针是严格检测数据类型的
func main023() {
var x = 123
var intPtr *int
intPtr = &x
fmt.Println(intPtr, *intPtr) //0x...,123 //var y = "你妹"
//intPtr = &y//编译错误,【整型指针】无法赋值为【字符串的地址】
} //指针的指针
func main024() {
var x = 123
var mPtr *int = &x //var mmp **int
mmPtr := &mPtr
fmt.Println(mmPtr)//0xc042072018
fmt.Printf("mmPtr的类型是%T\n",mmPtr)//mmPtr的类型是**int //打印x的值
fmt.Println(*mPtr)//123
fmt.Println(*(*mmPtr))//123
fmt.Println(**mmPtr)//123
} func main() {
//main021()
//main022()
//main023()
main024()
}

  

GO语言复合类型01---指针的更多相关文章

  1. 实验c语言不同类型的指针互用(不推荐只是学习用)

    #include <stdio.h> int main(int argc, char *argv[]) { printf("Hello, world\n"); ]; i ...

  2. GO语言复合类型04---映射

    package main import "fmt" /* 映射(map)是键值对(key-value)数据的集合 根据键key可以快速检索值value 键值的类型可以是任意的,ke ...

  3. GO语言复合类型03---切片

    切片相当于长度可以动态扩张的数组 array[start:end]从数组身上截取下标为[start,end)片段,形成切片start代表开始下标,不写默认代表从头开始切end代表结束下标(本身不被包含 ...

  4. GO语言复合类型02---数组

    package main import "fmt" /* 固定长度.固定类型的数据容器 */ /*数组的声明*/ func main031() { //var array [5]i ...

  5. GO语言复合类型05---递归

    package main import ( "fmt" "time" ) /* ·递归就是自己调自己 ·递归一定要有终止条件(否则就是无限死循环) */ /*使 ...

  6. Golang - 复合类型

    目录 Golang - 复合类型 1. 指针 2. new()和make() 3. 数组 4. slice 5. Map 6. 结构体 7. 结构体参数 Golang - 复合类型 1. 指针 go语 ...

  7. go语言 类型:基础类型和复合类型

    Go 语言中包括以下内置基础类型:布尔型:bool整型:int int64 int32 int16 int8 uint8(byte) uint16 uint32 uint64 uint浮点型:floa ...

  8. 带你学够浪:Go语言基础系列 - 8分钟学复合类型

    ★ 文章每周持续更新,原创不易,「三连」让更多人看到是对我最大的肯定.可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) " 对于一般的语言使用者来说 ,20% ...

  9. C语言中的复合类型

    复合类型 一.掌握的类型 1. 指针数组 int * arr[10]; //arr是一个数组,有10个元素,每个元素都是一个指针,即arr是一个指针数组 int a,b,c,d; arr[0] = & ...

随机推荐

  1. CVPR2021 | 华为诺亚实验室提出Transformer in Transformer

    前言: transformer用于图像方面的应用逐渐多了起来,其主要做法是将图像进行分块,形成块序列,简单地将块直接丢进transformer中.然而这样的做法忽略了块之间的内在结构信息,为此,这篇论 ...

  2. 你可能不知道的CSS元素隐藏“失效”以其妙用

    在CSS中,让元素隐藏(指屏幕范围内肉眼不可见)的方法很多,有的占据空间,有的不占据空间:有的可以响应点击,有的不能响应点击.后宫选秀--一个一个看. { display: none; /* 不占据空 ...

  3. Spring Security 上

    Spring Security 上 Security-dome 1.创建项目 创建一个Spring Boot项目,不用加入什么依赖 2.导入依赖 <dependencies> <!- ...

  4. 认识二进制安全与漏洞攻防技术 (Windows平台)

    二进制漏洞是指程序存在安全缺陷,导致攻击者恶意构造的数据(如Shellcode)进入程序相关处理代码时,改变程序原定的执行流程,从而实现破坏或获取超出原有的权限. 0Day漏洞 在计算机领域中,0da ...

  5. 【转】如何用MTR诊断网络问题

    MTR 是一个强大的网络诊断工具,管理员能够用它诊断和隔离网络错误,并向上游提供商提供有关网络状态的有用报告.MTR 通过更大的采样来跟踪路由,就像 traceroute + ping 命令的组合.本 ...

  6. Linux文件共享服务之NFS

    NFS(Network File System) 网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源.在NFS的应用中,本地NFS的客户端应用可 ...

  7. Aircrack-ng破解无线WIFI密码

    首先,如果kali是装在虚拟机里面的话,是不能用物理机的无线网卡的.所以,如果我们要想进行无线破解,需要外接一个无线网卡设备,并且该设备要支持 monitor 监听模式 iwconfig :系统配置无 ...

  8. Linux中的shell和bash

    目录 shell shell script sh bash Dash tty .pty 和 pts 学安全的我们,经常会听到说获得某服务器的shell,就是指获得某个服务器的操作权限.我们学习linu ...

  9. 易酷CMS2.5本地文件包含漏洞复现

    易酷CMS是一款影片播放CMS.该CMS2.5版本存在本地文件包含漏洞.我们可以利用这个漏洞,让其包含日志文件,然后再利用报错信息将一句话木马写入日志中.然后利用文件包含漏洞包含该日志文件,再用菜刀连 ...

  10. Andrew Ng机器学习算法入门((六):多变量线性回归方程求解

    多变量线性回归 之前讨论的都是单变量的情况.例如房价与房屋面积之前的关系,但是实际上,房价除了房屋面积之外,还要房间数,楼层等因素相关.那么此时就变成了一个多变量线性回归的问题.在实际问题中,多变量的 ...