//结构体的定义

[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
        public struct VGAStat
        {
            public int length;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
            public int[] number;
        }

public struct VGAStat1
        {
            public string str;
            public IntPtr intptr1;//指针的定义
        }

private void Form1_Load(object sender, EventArgs e)
        {

/********初始化结构体VGAStat*****************/
            VGAStat pp = new VGAStat();   
            pp.length = 123;
            pp.number=new int[6];
            for (int i = 0; i < 6; i++)
            {
                pp.number[i] = i + 1;
            }

   /**************************************************/

IntPtr intpt = Marshal.AllocHGlobal(Marshal.SizeOf(pp));   //对intpt分配内存
            Marshal.StructureToPtr(pp, intpt, true); 将数据封送到intpt

   /********初始化结构体VGAStat1*****************/

VGAStat1 vga = new VGAStat1();
            vga.intptr1 = intpt;

   /**************************************************/

VGAStat entries = (VGAStat)Marshal.PtrToStructure(vga.intptr1, typeof(VGAStat));

/********读取结构体数据*****************/
            string Number = string.Empty;

int ReadLength = entries.length;        //ReadLength=132
            for (int i = 0; i < 6; i++)
            {
                Number = Number + entries.number[i].ToString(); //Number="123456"
            }

/**************************************************/

C# 对结构体和指针的使用的更多相关文章

  1. 【学习笔记】【C语言】指向结构体的指针

    1.指向结构体的指针的定义 struct Student *p;  2.利用指针访问结构体的成员 1> (*p).成员名称 2> p->成员名称 3.代码 #include < ...

  2. c语言中较常见的由内存分配引起的错误_内存越界_内存未初始化_内存太小_结构体隐含指针

    1.指针没有指向一块合法的内存 定义了指针变量,但是没有为指针分配内存,即指针没有指向一块合法的内浅显的例子就不举了,这里举几个比较隐蔽的例子. 1.1结构体成员指针未初始化 struct stude ...

  3. C#将结构体和指针互转的方法

    . 功能及位置 将数据从托管对象封送到非托管内存块,属于.NET Framework 类库 命名空间:System.Runtime.InteropServices 程序集:mscorlib(在 msc ...

  4. C语言结构体和指针

    指针也可以指向一个结构体,定义的形式一般为: struct 结构体名 *变量名; 下面是一个定义结构体指针的实例: struct stu{ char *name; //姓名 int num; //学号 ...

  5. 37深入理解C指针之---结构体与指针

    一.结构体与指针 1.结构体的高级初始化.结构体的销毁.结构体池的应用 2.特征: 1).为了避免含有指针成员的结构体指针的初始化复杂操作,将所有初始化动作使用函数封装: 2).封装函数主要实现内存的 ...

  6. 深入了解Windows句柄到底是什么(句柄是逻辑指针,或者是指向结构体的指针,图文并茂,非常清楚)good

    总是有新入门的Windows程序员问我Windows的句柄到底是什么,我说你把它看做一种类似指针的标识就行了,但是显然这一答案不能让他们满意,然后我说去问问度娘吧,他们说不行网上的说法太多还难以理解. ...

  7. 关于C语言结构体,指针,声明的详细讲解。——Arvin

    关于结构体的详细分析 只定义结构体 struct Student { int age; char* name; char sex;//结构体成员 };//(不要忘记分号) Student是结构体的名字 ...

  8. c语言结构体&常指针和常量指针的区别

    结构体: 关系密切但数据类型不尽相同, 常指针和常量指针的区别: char * const cp : 定义一个指向字符的指针常数,即const指针,常指针. const char* p : 定义一个指 ...

  9. C#调用c++Dll 结构体数组指针的问题

    参考文章http://blog.csdn.net/jadeflute/article/details/5684687 但是这里面第一个方案我没有测试成功,第二个方案我感觉有点复杂. 然后自己写啦一个: ...

  10. Delphi结构体数组指针的问题

    //这段代码在Delphi 2007和delphi 7下是可以执行的,所以正确使用结构体数组和指针应该是这样的,已验证 unit Unit1; interface uses Windows, Mess ...

随机推荐

  1. Java基本类型内存字节数

    基本类型 字节数 位(bit) 取值范围 byte 1 1*8 -128~127 short 2 2*8   int 4 4*8   long 8 8*8   float 4 4*8   double ...

  2. es6(二)

    三 . 正则扩展: 1.构造函数的扩展 let regex = new Regex('xyz','i'); let regex2 = new Regex(/xyz/i);//test() 方法用于检测 ...

  3. 【Alpha】测试报告

    测试中发现的Bug 测试伴随着前后端的首次连接之后与开发一起进行,在本阶段,我们遇到了各种各样的bug,有些体现在功能上,有些虽然不会影响到具体的功能实现,但是会影响到用户体验.由于时间问题,我们对其 ...

  4. 详解Python的作用域和命名空间

    最近在学习Python,不得不说,Python真的是一门很好用的语言.但是学习的过程中关于变量作用域(scope)的命名空间(namespace)的问题真的把我给搞懵了.在查阅了相关资料之后,觉得自己 ...

  5. python之路-数据运算

    位运算: 运算符 描述                                                                   实例 +  加-两个对象相加         ...

  6. git命令提交新项目

    新建的项目没有与git关联过git initgit add .git commit -m "注释"git remote add origin 新SSH:URLgit push -f ...

  7. storcli 简易使用介绍

    MegaCli 是LSI公司官方提供的SCSI卡管理工具,由于LSI被收购变成了现在的Broadcom,所以现在想下载MegaCli,需要去Broadcom官网查找Legacy产品支持,搜索MegaR ...

  8. springboot-mybatis多数据源以及踩坑之旅

    首先,springboot项目结构如下 springboot配置文件内容如下 动态数据源的配置类如下(必须保证能被ComponentScan扫描到): 1 package com.letzgo.con ...

  9. C# 更新控件四部曲,自定义的用户控件无法更新怎么办

    用户控件如果在其他的项目被引用,希望更新控件后,所引用的项目同步更新效果,一开始难免失败,特别是更换了控件所在的文件夹. 这个时候,四部曲来解决控件的更新. 1.运行一下控件的项目,使控件生成一下. ...

  10. LeetCode 98 验证二叉搜索树

    题目: 给定一个二叉树,判断其是否是一个有效的二叉搜索树. 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数. 节点的右子树只包含大于当前节点的数. 所有左子树和右子树自身必须也是 ...