天天看點

【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/

本文版權歸作者所有,未經許可禁止轉載,否則保留追究法律責任的權利,若有需要請聯系[email protected]

微信公衆号

掃描下方二維碼關注個人微信公衆号,實時擷取更多幹貨

【Golang】快速複習指南QuickReview(五)——指針

同步更新至:http://www.randyfield.cn/

出處:http://www.cnblogs.com/RandyField/

本文版權歸作者和部落格園共有,未經許可禁止轉載,否則保留追究法律責任的權利,若有需要請聯系[email protected].