精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

亚洲精品v欧美精品v日韩精品| 欧美国产97人人爽人人喊| 欧美成人黑人xx视频免费观看| 欧美日韩久久婷婷| av小说在线播放| 久久久不卡网国产精品一区| 91精品久久久久久久久青青| 久久久久久久国产精品毛片| 在线观看欧美理论a影院| 欧美日韩在线一区二区| 无颜之月在线看| 少妇激情av一区二区| 久久99国产精品免费网站| 欧美精品videos另类日本| 亚洲图片另类小说| 嫩呦国产一区二区三区av| 日韩欧美在线视频免费观看| 亚洲欧洲另类精品久久综合| 国模私拍视频在线| 免费成人av在线播放| 久久青草福利网站| 免费观看特级毛片| 欧美日韩导航| 欧美一级片免费看| 日日摸天天爽天天爽视频| www在线免费观看视频| 久久久久国产成人精品亚洲午夜| 亚洲在线第一页| 免费一级a毛片| 在线亚洲一区| 欧美大片免费看| 九一在线免费观看| 欧洲专线二区三区| 亚洲白拍色综合图区| 不用播放器的免费av| 三上悠亚国产精品一区二区三区| 亚洲综合免费观看高清完整版| 亚洲春色综合另类校园电影| 天天操天天舔天天干| 国产精品一区免费视频| 国产成人精品免费视频| 中文字幕一区二区三区精品 | 国产精品久久久久免费| 性色av一区二区三区四区| 国产日韩专区| 91精品国产91久久久久| 五月天丁香激情| 久久中文亚洲字幕| 一本色道久久综合亚洲精品小说| 亚洲色图14p| 国内精品国产成人国产三级粉色| 日韩亚洲欧美在线观看| 特级黄色片视频| 欧美成人三级| 欧美精品久久久久久久多人混战 | 久久国产免费观看| 天天超碰亚洲| 日韩在线播放视频| 欧美xxxx精品| 久久人人99| 最近中文字幕日韩精品| 男生裸体视频网站| 色天天色综合| 日韩电影在线观看永久视频免费网站| 熟女人妻一区二区三区免费看| 精品国产亚洲一区二区在线观看| 在线成人av网站| 日本黄色www| 亚洲开心激情| 亚洲大尺度美女在线| 中文视频在线观看| 午夜欧洲一区| 亚洲图片欧美日产| 中国美女黄色一级片| 日韩电影一区| 久久不射热爱视频精品| 欧美精品入口蜜桃| 在线一区欧美| 国产精品久久97| 97精品人妻一区二区三区在线 | 国产精品吴梦梦| 亚洲图片在线播放| 极品少妇xxxx精品少妇| 91情侣在线视频| 成人精品在线播放| 91女厕偷拍女厕偷拍高清| 日韩欧美三级电影| 国产在线看片| 亚洲国产aⅴ天堂久久| 玩弄中年熟妇正在播放| 成人在线视频免费看| 91精品久久久久久蜜臀| 一级黄色大片免费看| 亚欧洲精品视频在线观看| 中文字幕欧美亚洲| 18精品爽视频在线观看| 免费看的黄色欧美网站| 国产一区二区丝袜| 成人午夜免费在线观看| 久久久精品tv| 隔壁人妻偷人bd中字| 樱桃视频成人在线观看| 欧美另类高清zo欧美| 高清中文字幕mv的电影| 国产欧美一区| 欧美日韩高清区| 成年人视频免费| 国产精品18久久久久| 欧美18视频| 手机av免费在线| 91福利国产成人精品照片| 粉色视频免费看| 网友自拍一区| 欧美激情xxxxx| 色婷婷久久综合中文久久蜜桃av| 福利电影一区二区三区| 先锋影音欧美| 黄色视屏在线免费观看| 555夜色666亚洲国产免| 亚洲精品成人无码熟妇在线| 欧美日韩影院| 国产日产欧美a一级在线| 午夜视频福利在线| 亚洲精品中文字幕乱码三区| 一区二区三区视频在线观看免费| 精品少妇一区| 欧美日韩国产二区| 中文字幕av免费观看| 91亚洲精华国产精华精华液| 国产91在线亚洲| 日韩大陆av| 一区二区三区视频观看| 天天操天天干视频| 高清久久久久久| 欧洲美女和动交zoz0z| 亚洲国产尤物| 亚洲一级免费视频| 少妇太紧太爽又黄又硬又爽| 成人国产精品免费| avove在线观看| 日韩一级特黄| 中文字幕视频一区二区在线有码| 亚洲成人av影片| 99r精品视频| 久久国产午夜精品理论片最新版本| 91嫩草国产线观看亚洲一区二区| 中文字幕av一区中文字幕天堂| 久久久久在线视频| 26uuu色噜噜精品一区| 欧洲精品一区二区三区久久| 成人免费直播在线| 久久影院模特热| 国产喷水吹潮视频www| 国产精品久久久一区麻豆最新章节| 毛片毛片毛片毛片毛片毛片毛片毛片毛片| 校花撩起jk露出白色内裤国产精品| 97超级碰在线看视频免费在线看 | 黄色日韩网站| 最近2019年手机中文字幕| 中文字幕乱码一区二区| 中文字幕电影一区| 欧美大尺度做爰床戏| 欧美日韩一区二区三区视频播放| 国产精品久久久久久超碰| 九九九伊在人线综合| 一本大道久久a久久综合| 欧美成人午夜精品免费| 日韩专区欧美专区| 日韩欧美亚洲区| 久久久久毛片| 久久精品国产一区二区电影| 北条麻妃一二三区| 精品国产乱码久久久久酒店| 国产呦小j女精品视频| 日韩av中文字幕一区二区 | 亚洲大胆人体在线| 玖玖爱免费视频| 福利一区二区在线| 青青青免费在线| 亚洲综合福利| 国产精品视频1区| 男人天堂久久久| 日韩你懂的在线播放| 中文字幕亚洲精品在线| 久久久久久亚洲综合| 香蕉视频网站入口| 亚洲欧美综合久久久| 国产女人水真多18毛片18精品 | 欧美日韩中文字幕| 日韩毛片无码永久免费看| 美女视频黄久久| 大荫蒂性生交片| 在线一级成人| 成人有码在线播放| 91av久久| 中文字幕日韩欧美在线视频| 国产精品探花视频| 亚洲第一福利视频在线| 性欧美精品男男| 国产河南妇女毛片精品久久久| a√天堂在线观看| 国产精品国产三级国产在线观看| 成人性色av| 久久99久久久精品欧美 | 神马久久午夜| 久久精彩免费视频| 偷拍自拍在线| 日韩一区二区三| 精品国产乱子伦| 亚洲一级在线观看| 国产视频不卡在线| 成人av电影在线播放| 自拍偷拍21p| 99精品视频免费| 看一级黄色录像| 精品国产成人| 精品欧美一区二区久久久伦| 祥仔av免费一区二区三区四区| 国外色69视频在线观看| 日本高清视频在线观看| 国产视频精品在线| 在线观看国产黄| 色综合天天综合网国产成人综合天 | 国产精品久久..4399| 天天影视天天精品| 日韩三级电影| 亚洲人成网亚洲欧洲无码| 91久久精品国产| 激情中国色综合| 日韩av日韩在线观看| 91www在线| 欧美黑人国产人伦爽爽爽| 日本中文字幕视频在线| 亚洲女成人图区| 天天射天天操天天干| 91精品综合久久久久久| 在线观看国产精品视频| 日韩欧美国产成人| 久久夜靖品2区| 一区二区三区免费看视频| 在线日韩国产网站| 中文字幕不卡在线观看| 四虎影成人精品a片| 成人18视频在线播放| 亚洲香蕉中文网| 粉嫩久久99精品久久久久久夜| 亚洲一区二区偷拍| 国产一区二三区| 三级av免费看| 国产成人亚洲综合a∨婷婷图片| 欧美成人手机在线视频| 久久精品国产在热久久| 91日韩视频在线观看| 久久亚洲风情| 日韩久久一级片| 久久国产精品久久w女人spa| 成人免费观看视频在线观看| 国产毛片一区| 丰满少妇被猛烈进入高清播放| 99视频精品| 成人在线免费在线观看| 久久福利影视| 狠狠热免费视频| 久久99九九99精品| 国产5g成人5g天天爽| 国产精品资源在线看| 潘金莲一级淫片aaaaa| 国产 欧美在线| 亚洲精品乱码久久| 91丨九色porny丨蝌蚪| 欧美bbbbb性bbbbb视频| 26uuu国产电影一区二区| 日本黄色小视频在线观看| 中文一区一区三区高中清不卡| 欧美xxxooo| 亚洲女人****多毛耸耸8| 国产一级特黄毛片| 日韩欧美国产成人| 一区二区日韩在线观看| 日韩精品一区二区三区在线观看| 天天操天天操天天干| 亚洲老板91色精品久久| 日韩免费网站| 色综合五月天导航| 欧美大胆性生话| 91免费看片在线| 国产精品1luya在线播放| 日本视频一区二区不卡| 欧美一区二区三区另类| 免费毛片网站在线观看| 秋霞午夜鲁丝一区二区老狼| www.51色.com| wwwwww.欧美系列| 成人三级视频在线观看| 午夜精品福利视频网站| 在线观看亚洲国产| 亚洲成人精品久久久| 成人激情电影在线看| 欧美日韩国产91| 国产精品久久亚洲不卡| 成人黄色在线免费观看| 欧美日韩123| 屁屁影院ccyy国产第一页| 久久久水蜜桃av免费网站| 午夜av中文字幕| 91老司机福利 在线| 小泽玛利亚一区| 色综合一区二区三区| 国产不卡精品视频| 一区二区三区回区在观看免费视频| 在线观看操人| 国产精品美女久久久免费| 国产成人一二| 超碰在线免费观看97| 久久久久国产精品午夜一区| 久久久久中文字幕亚洲精品| 国产精品视频一二| 亚洲久久在线观看| 日韩欧美的一区二区| 无遮挡动作视频在线观看免费入口| 2019中文字幕在线观看| 精品国产乱码一区二区三区| 日韩av不卡播放| 亚洲免费高清| 久久精品无码一区二区三区毛片| 久久九九影视网| 国产污污视频在线观看| 日韩女优av电影| sm国产在线调教视频| 国产精品视频精品| 亚洲理论电影片| 精品少妇在线视频| 国产黄色精品视频| 亚洲天堂一级片| 欧美日本在线播放| av在线日韩国产精品| 日韩av观看网址| 啪啪国产精品| 国产女大学生av| 成人激情动漫在线观看| 18岁成人毛片| 欧美一区二区美女| av毛片在线| 4444kk亚洲人成电影在线| 欧美激情偷拍自拍| xx欧美撒尿嘘撒尿xx| 国产欧美日韩另类一区| 午夜久久久久久久久久影院| 亚洲男人av电影| 中文字幕资源网在线观看免费 | 免费一级特黄录像| 久久精品无码一区二区三区| 欧美性猛交bbbbb精品| 日韩av在线免费看| 日韩欧美精品一区二区三区| 久久草.com| 视频一区国产视频| 蜜乳av中文字幕| 欧美挠脚心视频网站| 黄色的网站在线观看| 亚洲自拍高清视频网站| 欧美.www| 中国极品少妇xxxx| 激情成人在线视频| 青青国产在线| 国产精品狼人色视频一区| 欧美成免费一区二区视频| 超碰在线资源站| 亚洲风情在线资源站| 日韩av视屏| 国产精品入口免费视| 91精品综合久久久久久久久久久| 成人三级做爰av| 天天综合天天综合色| 伦理片一区二区三区| 国产美女精品视频| 欧美精品91| 国产一级二级在线观看| 日本精品视频一区二区三区| 3p视频在线观看| 成人av蜜桃| 西西人体一区二区| 国产成人在线网址| 欧美大片在线观看一区二区| 手机在线观看av| 一区二区高清视频| 国产成人亚洲精品狼色在线| 久久精品无码av| 久久精品成人一区二区三区 | 日本不卡123| 老女人性淫交视频| 国产视频亚洲视频| 伊人亚洲精品| 欧美激情 国产精品| 中文字幕日韩av资源站| 成人久久精品人妻一区二区三区| 国产999精品久久久影片官网| 91精品国产调教在线观看| 黄色av网址在线观看| 欧美乱妇23p|