W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
C#可以通過標(biāo)記為不安全的代碼塊中的指針進(jìn)行直接內(nèi)存操作。
不安全代碼應(yīng)使用 /unsafe
編譯器選項(xiàng)進(jìn)行編譯。
指針實(shí)例保存變量的地址。
指針類型可以轉(zhuǎn)換為任何其他指針類型。
主要的指針運(yùn)算符是:
運(yùn)算符 | 含義 |
---|---|
& | 返回一個(gè)指向變量地址的指針 |
* | 返回指針地址處的變量 |
-> | 一個(gè)語法快捷方式,其中x-> y等價(jià)于(* x).y |
通過用unsafe關(guān)鍵字標(biāo)記類型,類型成員或語句塊,我們可以使用指針類型并對內(nèi)存執(zhí)行C ++風(fēng)格指針操作。
下面是使用指針快速處理數(shù)組的示例:
unsafe void Process (int[,] data){
int length = data.Length;
fixed (int* b = data){
int* p = b;
for (int i = 0; i < length; i++)
*p++ &= 0xFF;
}
}
在一個(gè)固定語句中,我們可以獲得任何值類型的指針,值類型的數(shù)組或字符串。
在數(shù)組和字符串的情況下,指針將實(shí)際指向第一個(gè)元素,它是一個(gè)值類型。
在引用類型中聲明為內(nèi)聯(lián)的值類型需要將引用類型固定,如下所示:
class Main {
int x;
static void Main(){
Test test = new Test();
unsafe{
fixed (int* p = &test.x) // Pins test
{
*p = 0;
}
System.Console.WriteLine (test.x);
}
}
}
除了&
和 *
運(yùn)算符之外,C#還提供了C ++風(fēng)格的 ->
運(yùn)算符,它可以在結(jié)構(gòu)上使用:
struct Test{
int x;
unsafe static void Main(){
Test test = new Test();
Test* p = &test;
p->x = 1;
System.Console.WriteLine (test.x);
}
}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: