精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

C語言封送結構體數組

開發 后端
C語言在使用第三方的非托管API時,我們經常會遇到參數為指針或指針的指針這種情況,一般我們會用IntPtr指向我們需要傳遞的參數地址.下面將詳細介紹C語言封送結構體數組的具體過程.

在使用第三方的非托管API時,我們經常會遇到參數為指針或指針的指針這種情況,

一般我們會用IntPtr指向我們需要傳遞的參數地址;

但是當遇到這種一個導出函數時,我們如何正確的使用IntPtr呢,

extern "C" __declspec(dllexport) int GetClass(Class pClass[50]) ;

由于這種情況也經常可能遇到,所以我制作了2個示例程序來演示下如何處理這種非托管函數的調用!

首先創建一個C++ 的DLL  設置一個如上的導出函數

  1. #include <Windows.h>  
  2. #include <stdio.h>  
  3.  
  4. typedef struct Student  
  5. {  
  6.     char name[20];  
  7.     int age;  
  8.     double scores[32];  
  9. }Student;  
  10.  
  11. typedef struct Class  
  12. {  
  13.     int number;  
  14.     Student students[126];  
  15. }Class;  
  16.  
  17. extern "C" __declspec(dllexport) int GetClass(Class pClass[50])  
  18. {  
  19.     for(int i=0;i<50;i++)  
  20.     {  
  21.         pClass[i].number=i;  
  22.        for(int j=0;j<126;j++)  
  23.         {  
  24.             memset(pClass[i].students[j].name,0,20);  
  25.             sprintf(pClass[i].students[j].name,"name_%d_%d",i,j);  
  26.            pClass[i].students[j].age=j%2==0?15:20;  
  27.         }  
  28.     }  
  29.     return 0;  
  30. }  

上面DLL 的導出函數要求傳遞的參數為它自定義的Class結構體數組, 那么我們在C#調用它時也要自定義對應的結構體了,

我們可以定義為如下:

  1. [StructLayout(LayoutKind.Sequential)]  
  2.        struct Student  
  3.       {  
  4.            [MarshalAs(UnmanagedType.ByValTStr,SizeConst=20)]  
  5.            public string name;  
  6.            public int age;  
  7.            [MarshalAs(UnmanagedType.ByValArray,SizeConst=32)]  
  8.            public double[] scores;  
  9.        }  
  10.        [StructLayout(LayoutKind.Sequential)]  
  11.        struct Class  
  12.        {  
  13.           public int number;  
  14.            [MarshalAs(UnmanagedType.ByValArray,SizeConst=126)]  
  15.           public Student[] students;  
  16.  
  17.        }  

需要注意的是,這2個結構體中的數組大小一定要跟C++中的限定一樣大小哦,接下來如何使用這個API來正確的獲取數據呢,大多數人可能想到像這樣的處理方式 

  1. Class myclass = new Class();  
  2.             IntPtr ptr=Marshal.AllocHGlobal(Marshal.SizeOf(typeof(Class)));  
  3.             GetClass(ptr);  
  4.             Marshal.FreeHGlobal(ptr);  

沒錯,這樣的處理是沒問題的,但是我們的API的參數是Class數組,這種處理方式只是傳遞一個Class結構體參數,所以這種方式在這里就不太合適了,!

 那大家就想到先Class[] myclass = new Class[MaxClass]; 然后在用Marshal.AllocHGlobal 來獲取myclass 數據的指針, 

其實這樣也是錯的, 因為 Class結構中包含了,不能直接封送的Student結構,所以無論如何上面的想法是錯誤的!

那要怎么辦呢,其實很簡單,就是先分配一段非托管內存,并調用API后,再將非托管內容數據讀取到托管結構體數據中!

示例C語言封送結構體數組演示代碼如下 

  1.  1  static void Main(string[] args)  
  2.  2         {  
  3.  3             int size = Marshal.SizeOf(typeof(Class)) * 50;  
  4.  4             byte[] bytes = new byte[size];  
  5.  5             IntPtr pBuff = Marshal.AllocHGlobal(size);  
  6.  6             Class[] pClass = new Class[50];  
  7.  7             GetClass(pBuff);  
  8.  8             for (int i = 0; i < 50; i++)  
  9.  9             {  
  10. 10                 IntPtr pPonitor = new IntPtr(pBuff.ToInt64() + Marshal.SizeOf(typeof(Class)) * i);  
  11. 11                 pClass[i] = (Class)Marshal.PtrToStructure(pPonitor, typeof(Class));  
  12. 12             }  
  13. 13             Marshal.FreeHGlobal(pBuff);  
  14. 14             Console.ReadLine();  
  15. 15         }  

有興趣的不妨自己測試一下C語言封送結構體數組,看看輸出結果是否正確!

【編輯推薦】

  1. 詳解C#中不同類的類型
  2. 淺談C#中標準Dispose模式的實現
  3. C#選擇正確的集合進行編碼
  4. C# 4.0新特性:協變與逆變中的編程思想
  5. C#應用Attribute特性 代碼統計分析

 

責任編輯:佚名
相關推薦

2014-04-01 10:11:33

C語言指針

2022-08-19 14:38:52

C語言結構體struct

2009-08-14 11:05:28

C#語言的結構體

2014-02-10 15:05:37

C語言封裝

2009-08-13 13:17:10

C#結構體數組

2009-08-13 13:03:52

C#結構體數組

2020-07-21 15:20:20

語言結構體共用體

2013-06-26 10:13:32

C語言結構體結構體偏移

2009-08-13 13:29:04

C#結構體使用

2023-10-10 13:58:00

C語言代碼結構體

2022-09-30 15:03:09

C語言深拷貝淺拷貝

2021-04-20 09:00:48

Go 語言結構體type

2023-07-29 15:03:29

2009-08-07 11:26:53

C#數組結構

2009-08-13 15:03:58

C#結構體變量

2009-08-31 15:02:22

C#解析結構體指針

2009-08-13 11:18:50

C#結構體

2009-08-13 14:46:03

C#結構體定義

2020-11-23 08:54:14

Go語言結構體

2020-11-26 06:40:24

Go語言基礎
點贊
收藏

51CTO技術棧公眾號

欧美人妻一区二区三区| 免费观看国产视频在线| 在线免费a视频| 亚洲成人精品| 国产视频一区在线| 午夜精品中文字幕| 福利影院在线看| 国产片一区二区三区| 91精品国产91久久久久青草| 国产精品一区二区6| 日韩欧美大片| 亚洲国产精品va在线| 又色又爽又高潮免费视频国产| 国产福利在线播放麻豆| 久久久久99精品一区| 91网站在线看| 天堂网免费视频| 欧美黄色一级视频| 伊人亚洲福利一区二区三区| 亚洲啪av永久无码精品放毛片 | 欧美成人久久久| 日本69式三人交| 另类一区二区| 日韩欧美黄色动漫| 免费一级淫片aaa片毛片a级| 超碰免费在线观看| 91色porny蝌蚪| 99re热精品| 一区二区www| 美女视频一区免费观看| 久久久久久综合网天天| 小向美奈子av| 波多野结衣在线观看一区二区| 日韩网站在线看片你懂的| 无人在线观看的免费高清视频| 国产福利在线免费观看| 一区二区三区影院| av不卡在线免费观看| yiren22综合网成人| 91麻豆国产自产在线观看| 97影院在线午夜| 一本色道久久综合熟妇| 日本不卡视频一二三区| 日本亚洲欧洲色α| 国偷自拍第113页| 亚洲激情精品| 久久久久久久久国产精品| 国产色无码精品视频国产| 日韩欧美字幕| 中文字幕亚洲一区| 蜜桃av乱码一区二区三区| 夜夜春成人影院| 亚洲精品福利视频| av2014天堂网| 久久久久高潮毛片免费全部播放| 精品精品欲导航| 久久黄色一级视频| 亚洲一区二区免费在线观看| 日韩限制级电影在线观看| 加勒比av中文字幕| 香蕉成人在线| 欧美一区二区播放| 性久久久久久久久久久久久久| 成人影院网站ww555久久精品| 欧美网站大全在线观看| 91福利国产成人精品播放| 69堂免费精品视频在线播放| 欧美色男人天堂| 亚洲一区精品视频在线观看| а天堂中文最新一区二区三区| 3d动漫精品啪啪1区2区免费| 一级黄色片在线免费观看| 警花av一区二区三区| 日韩一级完整毛片| 久久久国产精品无码| 日韩高清一级| 中文字幕精品久久| 国产一区二区播放| 亚洲黄色天堂| 国产精品高潮呻吟久久av野狼 | 欧美一级搡bbbb搡bbbb| 日韩大尺度视频| 欧美91在线| 亚洲日韩中文字幕| 国产麻豆a毛片| 欧美日韩国产免费观看| 91成人在线观看国产| 国产精品xxxxxx| 国产剧情一区二区三区| 国产精品一区二区三区免费| 久热av在线| 亚洲天天做日日做天天谢日日欢| 国产精品久久久久7777| 欧美极品影院| 91精品国产黑色紧身裤美女| 日批免费观看视频| 国内精品久久久久久99蜜桃| 超碰日本道色综合久久综合| 女人十八岁毛片| 麻豆精品在线视频| 国产尤物91| 黄色网在线免费看| 欧美视频在线观看 亚洲欧| 国产免费中文字幕| 亚洲素人在线| 九九视频直播综合网| 久久久久久久久久久影院| 国模娜娜一区二区三区| 精品午夜一区二区三区| 在线免费黄色| 婷婷国产v国产偷v亚洲高清| 日本高清久久久| 猫咪成人在线观看| 久久成人综合视频| 国产女主播喷水视频在线观看| 国产高清不卡一区二区| 视频一区视频二区视频三区视频四区国产| 一二三四区在线观看| 色婷婷激情综合| 大桥未久恸哭の女教师| 91视频一区| 国产va免费精品高清在线| 黑人精品一区二区三区| 国产精品久久久久久户外露出| 日韩精品―中文字幕| 青草伊人久久| 日韩在线视频一区| 国产情侣小视频| 久久夜色精品国产欧美乱极品| 欧美日韩激情四射| 粉嫩av国产一区二区三区| 中文字幕国产精品| av一级在线观看| 91网页版在线| 久久亚洲中文字幕无码| 日韩三级av高清片| 久久久国产精彩视频美女艺术照福利| www.日韩一区| 久久久久综合网| 色综合久久久久无码专区| 成人看片爽爽爽| 欧美大片在线看| 国产情侣一区二区| 中文字幕一区二区在线观看| 国产精品拍拍拍| 国产伦精品一区二区三区千人斩 | 亚洲一区二区免费视频软件合集| 亚洲女色av| 亚洲美女av黄| 欧美国产成人精品一区二区三区| 91原创在线视频| 欧美日韩黄色一级片| 国内精品免费| 777777777亚洲妇女| 日本黄色大片视频| 亚洲电影一级黄| 中文字幕一区二区人妻电影丶| 国产精品豆花视频| 国产98在线|日韩| 大桥未久在线播放| 亚洲国产精品成人精品| 成人精品在线看| 久久男人中文字幕资源站| 无码人妻h动漫| 国产一区二区欧美| 国产在线精品自拍| 污视频在线看网站| 亚洲国产精品va| 一级一片免费看| 国产精品女主播av| 污视频在线观看免费网站| 欧美二区视频| 精品无码久久久久久久动漫| 成人在线爆射| 久久五月情影视| 精品人妻伦一区二区三区久久| 亚洲国产裸拍裸体视频在线观看乱了 | 色偷偷www8888| 处破女av一区二区| 激情综合网婷婷| 色88久久久久高潮综合影院| 99蜜桃在线观看免费视频网站| av免费不卡| 中文字幕日韩在线播放| 99久久精品国产色欲| 天天影视网天天综合色在线播放| 一级片手机在线观看| 狠狠色狠狠色综合系列| 精品少妇人欧美激情在线观看| 伊人久久综合影院| 成人免费午夜电影| 欧美a级在线观看| 在线亚洲男人天堂| 亚洲欧美国产高清va在线播放| 欧美视频在线视频| 校园春色 亚洲| 久久你懂得1024| 中文字幕 欧美 日韩| 午夜在线精品偷拍| 乱熟女高潮一区二区在线| 国产99精品| 国产高清自拍99| 成人免费黄色| 91精品国产91久久久久久吃药| 午夜免费视频在线国产| 亚洲国产小视频在线观看| 中文字幕在线日亚洲9| 亚洲第一福利一区| 91高清免费看| 久久蜜桃av一区精品变态类天堂| 亚洲女人在线观看| 奇米影视在线99精品| 国产精品沙发午睡系列| 中文字幕人成人乱码| 日韩av高清| 奇米777国产一区国产二区| 91久久精品视频| 精品无人乱码一区二区三区| 欧美疯狂xxxx大交乱88av| 在线a免费看| 亚洲人成免费电影| 天天干天天舔天天射| 欧美一级一级性生活免费录像| 中文字幕免费播放| 欧美性猛交99久久久久99按摩| www.av视频在线观看| 亚洲日本在线看| 欧美极品jizzhd欧美18| 久久网站最新地址| av无码一区二区三区| 国产99精品在线观看| 五月六月丁香婷婷| 精品一区二区三区免费观看| 激情五月俺来也| 日韩制服丝袜先锋影音| 国产最新免费视频| 99在线精品视频在线观看| 日韩成人三级视频| 欧美va亚洲va日韩∨a综合色| 亚洲欧美国产不卡| 成人vr资源| 亚洲韩国在线| 成人羞羞视频播放网站| 神马影院一区二区三区| 国产亚洲一卡2卡3卡4卡新区 | 韩日视频在线| 国产偷亚洲偷欧美偷精品| 天堂在线视频观看| 亚洲国产精品成人va在线观看| 日本精品久久久久久| 亚洲国产成人爱av在线播放| 蜜臀av中文字幕| 亚洲精品电影网站| 青青青草原在线| 亚洲视频视频在线| 91国产丝袜在线放| 中文字幕在线免费| 在线播放日韩专区| jzzjzzjzz亚洲成熟少妇| 中国人与牲禽动交精品| 日本视频在线免费观看| 久久久精品网站| 日本一本在线免费福利| 国外成人在线直播| 在线手机中文字幕| 国产精品欧美日韩一区二区| 黄色日韩网站| 成人欧美一区二区| 亚洲三级av| 蜜桃传媒视频第一区入口在线看| 精品一区欧美| 一本一生久久a久久精品综合蜜| 国产精品91一区二区三区| 国产又粗又爽又黄的视频 | 无码人妻少妇伦在线电影| 99热精品在线| 国产av人人夜夜澡人人爽| 国产乱理伦片在线观看夜一区| 成人做爰69片免费| 久久精品女人天堂av免费观看| 欧美伊人精品成人久久综合97| 中文字幕人妻互换av久久 | 91精品国产91久久久| 朝桐光一区二区| 91在线免费看网站| 久久久免费毛片| 婷婷久久伊人| 国产精品videosex极品| 青青草av网站| 国产老妇另类xxxxx| 无码人妻aⅴ一区二区三区| 国产精品电影一区二区| 日韩成人一区二区三区| 欧美日韩不卡视频| 三级小视频在线观看| 色多多国产成人永久免费网站| 国产一线二线在线观看| 国产不卡精品视男人的天堂| 亚洲精品aⅴ| 无遮挡亚洲一区| 在线欧美日韩| 亚洲18在线看污www麻豆 | 8x8x8国产精品| 天堂在线一二区| 久久在精品线影院精品国产| 黑人巨大精品| 国产三级精品在线不卡| 国产精品99在线观看| 成人观看免费完整观看| 国产一区二区三区美女| 精品无码国产污污污免费网站| 亚洲在线一区二区三区| 一级一级黄色片| 日韩激情视频在线播放| 手机在线免费看av| 国产在线精品一区免费香蕉| 国产中文精品久高清在线不| 欧美激情 国产精品| 国产精品亚洲专一区二区三区| 天天操天天舔天天射| 精品久久久久久中文字幕| www.国产免费| 久久九九亚洲综合| 成人福利片在线| 青青草成人激情在线| 中文亚洲免费| 白嫩情侣偷拍呻吟刺激| 亚洲精品va在线观看| 国产一区二区网站| 中日韩午夜理伦电影免费| 国产伦精品一区二区三区视频金莲| 国产精品福利视频| 欧美高清不卡| 日本成人在线免费观看| 亚洲欧洲日产国码二区| 亚洲无码久久久久| 自拍偷拍免费精品| 成人一区视频| 一区二区免费电影| 久久狠狠亚洲综合| av最新在线观看| 欧美日韩情趣电影| 一区二区高清不卡| 成人网在线免费看| 国产精品久久久久久| 久久久久久久久久一区| 亚洲ww精品| 色综合老司机第九色激情| 欧洲精品99毛片免费高清观看| 影音先锋成人资源网站| 国产成人精品亚洲日本在线桃色| 天天看片中文字幕| 欧美va在线播放| 不卡的av影片| 久久久久久九九| 男人天堂欧美日韩| 夜夜春很很躁夜夜躁| 欧美久久一二区| 永久免费网站在线| 国产一区二区三区高清| 在线综合视频| 国产交换配乱淫视频免费| 在线观看不卡一区| 日本三级在线视频| av一区二区三区免费| 99精品99| 一级特黄曰皮片视频| 欧美精品色综合| 国产盗摄一区二区| 麻豆精品传媒视频| 蜜桃免费网站一区二区三区| 男女做暖暖视频| 亚洲福利小视频| 日韩欧美2区| 欧美aaa在线观看| 成人免费毛片app| 亚洲天堂一区在线| 久久精品99久久香蕉国产色戒| 亚洲视频精选| 国产无套内射久久久国产| 国产精品黄色在线观看| www.蜜桃av.com| 日韩av三级在线观看| 99欧美视频| 西西大胆午夜视频| 欧美日韩激情一区| 成人女同在线观看| 日本一区二区不卡高清更新| 国产美女在线精品| 亚洲国产精品女人| 国产精品久一| av一区二区三区免费观看| 91麻豆免费看| 亚洲一线在线观看| 91精品国产免费久久久久久| 人人狠狠综合久久亚洲婷| 欧美xxxxx少妇| 欧美日韩不卡一区二区| 亚洲天堂资源| 国产精品一二三在线观看|