真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何使用c#結(jié)構(gòu)體

本篇內(nèi)容主要講解“如何使用c#結(jié)構(gòu)體”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“如何使用c#結(jié)構(gòu)體”吧!

成都創(chuàng)新互聯(lián)公司主要從事成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)開化,10多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575

直接看c++和c#代碼:

struct structpointer
{
	int id;
	int* ptrid;
};
void processstructpointer(structpointer *sp)
{
	if (sp == NULL)
		return;
	int* p;
	p = sp->ptrid;
	while (true)
	{
		if (*p != 0) //只要不是0就處理
		{
			cout << *p << endl;
			*p += 1;
			p += 1;
		}
		else
		{
			break;
		}
	}
}
        unsafe public struct structpointer
        {
            public int id;
            public int* ptrid;
        };
        [DllImport("ccalldll2.dll", EntryPoint = "processstructpointer", CallingConvention = CallingConvention.Cdecl)]
        public static extern unsafe void processstructpointer(structpointer *sp);
        private void button2_Click(object sender, EventArgs e)
        {
            structpointer[] sp = new structpointer[1];
            int[] ids = new int[3];
            ids[0] = 1; ids[1] = 5; ids[2] = 7;
            unsafe
            {
                ////int* p = &ids[0];//只能獲取 fixed 語句初始值設(shè)定項(xiàng)內(nèi)的未固定表達(dá)式的地址
                //fixed(structpointer* p = &sp[0])
                //{
                  
                //    //p->ptrid = &ids[0];//只能獲取 fixed 語句初始值設(shè)定項(xiàng)內(nèi)的未固定表達(dá)式的地址
                //}
                fixed(int *p = &ids[0])
                {
                    fixed(structpointer* pt = &sp[0])
                    {
                        pt->ptrid = p; //注意這種寫法
                        processstructpointer(pt);
                        processstructpointer(pt);
                    }
                }                
            }
        }

注意:連續(xù)兩次調(diào)用processtructpointer(pt)的現(xiàn)象:

1)當(dāng)用ids[0] = 1; ids[1] = 5; ids[2] = 0;則一切現(xiàn)象都正常OK;

2)當(dāng)用ids[0] = 1; ids[1] = 5; ids[2] = 7;則一切現(xiàn)象都不正確。

上面兩種現(xiàn)象都好理解,關(guān)鍵是結(jié)構(gòu)體,結(jié)構(gòu)體指針,結(jié)構(gòu)體成員是指針,結(jié)構(gòu)體指針作參數(shù)在c++和c#之間是如何處理的。其實(shí)還有IntPtr可以處理struct相關(guān)的參數(shù)。

補(bǔ)充說明:

以前一直實(shí)驗(yàn)都是c++和c#中的struct的名稱都是一樣的,今天將上面的structpointer改為structpointerxback,其它c(diǎn)#中代碼也對(duì)應(yīng)修改名稱,結(jié)果實(shí)驗(yàn)也是OK的。這說明:名稱只是形式而已,真正從內(nèi)存角度來說,c++處理的時(shí)候并不是以名稱來看的,還是從內(nèi)存物理結(jié)構(gòu)來看。

到此,相信大家對(duì)“如何使用c#結(jié)構(gòu)體”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!


標(biāo)題名稱:如何使用c#結(jié)構(gòu)體
標(biāo)題鏈接:http://weahome.cn/article/jedeip.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部