前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Golang】快速复习指南QuickReview(五)——指针

【Golang】快速复习指南QuickReview(五)——指针

作者头像
DDGarfield
发布2022-06-23 19:01:19
1650
发布2022-06-23 19:01:19
举报
文章被收录于专栏:加菲的博客加菲的博客

指针也就是内存地址,指针变量是用来存放内存地址的变量。学习C语言,C++经常使用指针,Golang中也是指针使用的高频语言,C#几乎没怎么用过。但是不代表C#中不能使用指针。只是设计者并不希望开发者在不熟练的情况下使用指针,引发安全问题。

指针

C#中的指针

1. 修改配置

C#默认是不允许使用指针,强行dotnet run会报错:

代码语言:javascript
复制
Unsafe code may only appear if compiling with /unsafe

需要在.csproj中增加如下配置,以允许不安全的代码(指针)

代码语言:javascript
复制
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>

2. unsafe

代码语言:javascript
复制
unsafe static void TestPoint()
{
    int i = 10;

    //指针变量
    int* iptr = &i;
    Console.WriteLine(*iptr);//指针取值(根据指针去内存取值)
}

Golang的指针

1. 取地址&

代码语言:javascript
复制
i := 10
iptr := &i //取i的地址赋值给iptr
fmt.Printf("type of iptr:%T\n", iptr)
fmt.Printf("value of b:%v\n", iptr)
代码语言:javascript
复制
type of iptr:*int
value of b:0xc000014118

2. 地址取值

根据指针取值,这个跟C#是一致的:*指针变量

代码语言:javascript
复制
fmt.Printf("value of iptr's address :%v\n", *iptr) //指针取值(根据指针去内存取值)
代码语言:javascript
复制
value of iptr's address :10

3. new

代码语言:javascript
复制
a := new(int) //分配一个内存,并把内存地址赋值给a变量
fmt.Printf("%T\n", a)
*a = 10
fmt.Printf("%v\n", a)
fmt.Printf("%v\n", *a)
代码语言:javascript
复制
*int
0xc0000a2108
10

指针就这么点内容,配合后面的结构体,指针将会发挥大作用。

再次强调:这个系列并不是教程,如果想系统的学习,博主可推荐学习资源。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-02-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 加菲的博客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 指针
    • C#中的指针
      • 1. 修改配置
      • 2. unsafe
    • Golang的指针
      • 1. 取地址&
      • 2. 地址取值
      • 3. new
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档