C#结构体指针的定义及使用详解

在解析C#结构体指针前,必须知道C#结构体是如何定义的。在c#中同样定义该结构体。

十载的聊城网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网整合营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整聊城建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联公司从事“聊城网站设计”,“聊城网站推广”以来,每个客户项目都认真落实执行。

C#结构体指针之C#结构体的定义:

 
 
 
  1. [StructLayout(LayoutKind.Sequential)]  
  2.  
  3. public struct VGAStat  
  4.  
  5. {  
  6.  
  7. public int ChannelNum;//通道数量  
  8.  
  9.  
  10. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]  
  11.  
  12. public char[] Version;//版本信息  
  13.  
  14. public uint CPUUsage;//CPU占用  
  15.  
  16. public bool WorkStatusOk; //工作状态  
  17.  
  18.  
  19. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]  
  20.  
  21. public tagCheckArg[] ChannelStatistic;//通道信息  
  22.  

定义完结构体后,就可将接收到的C#结构体指针转换为定义的结构体对象。

 
 
 
  1. VGAStat entries = (VGAStat)Marshal.PtrToStructure(iptr, typeof(VGAStat));  
  2.  
  3. //iptr为接收到的非托管的结构体指针。 

反之,也可将结构体赋值后封送到非托管内存。

假如vga为定义后实例化并赋值了的结构体。

 
 
 
  1. IntPtr intptr = Marshal.AllocHGlobal(Marshal.SizeOf(vga));  
  2.  
  3. Marshal.StructureToPtr(vga, intptr, true);  
  4.  
  5. //在此发送intptr指针给目的方  
  6.  
  7. Marshal.FreeHGlobal(intptr);//释放分配的非托管内存。 

C#结构体指针的定义及使用的相关内容那个就向你介绍到这里,希望对你了解和学习C#结构体指针有所帮助。

文章标题:C#结构体指针的定义及使用详解
本文网址:http://www.stwzsj.com/qtweb/news9/15009.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联