【Golang】快速复习指南QuickReview(五)——指针
指针
指针也就是内存地址,指针变量是用来存放内存地址的变量。学习C
语言,C++
经常使用指针,Golang
中也是指针使用的高频语言,C#
几乎没怎么用过。但是不代表C#
中不能使用指针。只是设计者并不希望开发者在不熟练的情况下使用指针,引发安全问题。
1.C#中的指针
1.1 修改配置
C#默认是不允许使用指针,强行dotnet run
会报错:
Unsafe code may only appear if compiling with /unsafe
需要再.csproj
中增加如下配置,以允许不安全的代码(指针)
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>
1.2 unsafe
unsafe static void TestPoint()
{
int i = 10;
//指针变量
int* iptr = &i;
Console.WriteLine(*iptr);//指针取值(根据指针去内存取值)
}
2.Golang的指针
2.1 取地址&
i := 10
iptr := &i //取i的地址赋值给iptr
fmt.Printf("type of iptr:%T\n", iptr)
fmt.Printf("value of b:%v\n", iptr)
type of iptr:*int
value of b:0xc000014118
2.2 地址取值
fmt.Printf("value of iptr's address :%v\n", *iptr) //指针取值(根据指针去内存取值)
value of iptr's address :10
2.3 new
a := new(int) //分配一个内存,并把内存地址赋值给a变量
fmt.Printf("%T\n", a)
*a = 10
fmt.Printf("%v\n", a)
fmt.Printf("%v\n", *a)
*int
0xc0000a2108
10
指针就这么点内容,配合后面的结构体,指针将会发挥大作用。
再次强调:这个系列并不是教程,如果想系统的学习,博主可推荐学习资源。
作者:Garfield
同步更新至个人博客:http://www.randyfield.cn/
本文版权归作者所有,未经许可禁止转载,否则保留追究法律责任的权利,若有需要请联系287572291@qq.com
微信公众号
扫描下方二维码关注个人微信公众号,实时获取更多干货
作者:Garfield
本文版权归作者和博客园共有,未经许可禁止转载,否则保留追究法律责任的权利,若有需要请联系287572291@qq.com.