指針
指針也就是記憶體位址,指針變量是用來存放記憶體位址的變量。學習
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]
微信公衆号
掃描下方二維碼關注個人微信公衆号,實時擷取更多幹貨

同步更新至:http://www.randyfield.cn/
出處:http://www.cnblogs.com/RandyField/
本文版權歸作者和部落格園共有,未經許可禁止轉載,否則保留追究法律責任的權利,若有需要請聯系[email protected].