C#固定指針簡(jiǎn)單介紹
C#固定指針
在語句塊前輸入關(guān)鍵字fixed,將會(huì)告訴CLR塊內(nèi)的對(duì)象不能重定位,這樣CLR就不會(huì)重定位指針指向的數(shù)據(jù)存儲(chǔ)位置。因此在C#固定指針時(shí),使用關(guān)鍵字fixed將能阻止程序運(yùn)行時(shí)無效指針的產(chǎn)生。讓我們看看它是如何工作的:
- using System;
- class CData
- {
- public int x;
- }
- class CProgram
- {
- unsafe static void SetVal(int *pInt)
- {
- *pInt=1979;
- }
- public unsafe static void Main()
- {
- CData d = new CData();
- Console.WriteLine("Previous value: {0}", d.x);
- fixed(int *p=&d.x)
- {
- SetVal(p);
- }
- Console.WriteLine("New value: {0}", d.x);
- }
- }
我們?cè)谶@段代碼里通過一個(gè)fixed塊,將CData對(duì)象數(shù)據(jù)成員(域)x的地址賦給了一個(gè)整數(shù)型指針p。當(dāng)fixed塊中的語句被執(zhí)行時(shí),這個(gè)指針p將一直指向原來的那塊內(nèi)存區(qū)域,因?yàn)镃LR已被指示暫時(shí)凍結(jié)這個(gè)變量直到該fixed塊執(zhí)行完畢。一旦fixed塊執(zhí)行完畢,這個(gè)對(duì)象就又能被CLR 重新定位了。
以上就是C#固定指針編程的介紹,關(guān)鍵是要說明語句塊是unsafe并fixed的。希望能因此提高你對(duì)C#固定指針使用的知識(shí)!
【編輯推薦】