如何使用c#結構體

本篇內容主要講解“如何使用c#結構體”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何使用c#結構體”吧!

成都創新互聯公司主要從事成都網站設計、成都網站制作、外貿網站建設、網頁設計、企業做網站、公司建網站等業務。立足成都服務開化,10多年網站建設經驗,價格優惠、服務專業,歡迎來電咨詢建站服務: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 語句初始值設定項內的未固定表達式的地址
                //fixed(structpointer* p = &sp[0])
                //{
                  
                //    //p->ptrid = &ids[0];//只能獲取 fixed 語句初始值設定項內的未固定表達式的地址
                //}
                fixed(int *p = &ids[0])
                {
                    fixed(structpointer* pt = &sp[0])
                    {
                        pt->ptrid = p; //注意這種寫法
                        processstructpointer(pt);
                        processstructpointer(pt);
                    }
                }                
            }
        }

注意:連續兩次調用processtructpointer(pt)的現象:

1)當用ids[0] = 1; ids[1] = 5; ids[2] = 0;則一切現象都正常OK;

2)當用ids[0] = 1; ids[1] = 5; ids[2] = 7;則一切現象都不正確。

上面兩種現象都好理解,關鍵是結構體,結構體指針,結構體成員是指針,結構體指針作參數在c++和c#之間是如何處理的。其實還有IntPtr可以處理struct相關的參數。

補充說明:

以前一直實驗都是c++和c#中的struct的名稱都是一樣的,今天將上面的structpointer改為structpointerxback,其它c#中代碼也對應修改名稱,結果實驗也是OK的。這說明:名稱只是形式而已,真正從內存角度來說,c++處理的時候并不是以名稱來看的,還是從內存物理結構來看。

到此,相信大家對“如何使用c#結構體”有了更深的了解,不妨來實際操作一番吧!這里是創新互聯網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

網頁標題:如何使用c#結構體
URL網址:http://m.kartarina.com/article8/jedeip.html

成都網站建設公司_創新互聯,為您提供Google小程序開發微信小程序營銷型網站建設做網站域名注冊

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

外貿網站制作
主站蜘蛛池模板: 国产精品爽爽va在线观看无码| 亚洲人成无码网站在线观看| heyzo高无码国产精品| 国产成人无码区免费A∨视频网站 国产成人无码午夜视频在线观看 国产成人无码精品一区不卡 | 国产免费无码一区二区| 日韩精品人妻系列无码专区| 亚洲AV无码精品国产成人| 中文人妻无码一区二区三区 | 国产亚洲大尺度无码无码专线| 亚洲AV无码码潮喷在线观看| 成人年无码AV片在线观看| 亚洲国产精品成人精品无码区在线| 国产AV无码专区亚洲AV蜜芽| 人妻无码一区二区三区AV| 日韩精品无码免费专区午夜不卡 | 久久久久久亚洲Av无码精品专口| 国产精品无码一区二区三区免费| 无码专区狠狠躁躁天天躁| 无码日韩精品一区二区人妻| 亚洲精品无码久久久久秋霞 | 久久久久亚洲精品无码系列| 亚洲一级Av无码毛片久久精品| 一本大道无码av天堂| 久久午夜夜伦鲁鲁片免费无码 | 亚洲精品无码少妇30P| 久久久无码人妻精品无码| 亚洲级αV无码毛片久久精品| av无码精品一区二区三区四区| 亚洲午夜无码久久久久软件| 久久久久久亚洲AV无码专区| 无码av免费网站| 丰满熟妇人妻Av无码区| 粉嫩高中生无码视频在线观看| 免费一区二区无码视频在线播放| 最新亚洲人成无码网www电影| 无码无套少妇毛多69XXX| 色欲香天天综合网无码| 无码综合天天久久综合网| 精品无码国产一区二区三区麻豆| (无码视频)在线观看| 精品人体无码一区二区三区|