如何使用c#结构体
发表于:2024-11-21 作者:千家信息网编辑
千家信息网最后更新 2024年11月21日,本篇内容主要讲解"如何使用c#结构体",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何使用c#结构体"吧!直接看c++和c#代码:struct struc
千家信息网最后更新 2024年11月21日如何使用c#结构体
本篇内容主要讲解"如何使用c#结构体",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何使用c#结构体"吧!
直接看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#
名称
现象
c++
指针
处理
内存
内容
参数
地址
表达式
语句
学习
实验
实用
更深
之间
代码
关键
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全三个层面
黑龙江优质软件开发价格
软件开发销售面试
天象网络技术有限公司客服
食品安全事件 数据库
2015年典型网络安全事件
工程安全管理软件开发
珠海戴尔服务器制作安装
河南服务器防火墙报价
卫星互联网振芯科技
广州智能软件开发公司
12306服务器是
北京服务器主板维修
黎明杀机亚服是哪个服务器
ibm数据库有哪些
控制器里更新数据库
03我本沉默服务器端
网络安全负责服务器吗
临西软件开发项目管理
在家里做软件开发靠谱吗
华为昆明软件开发公司成立
数据库规范化理论符号
数据库为什么没有更新
软件开发简单题库
人口地图软件开发
文华赢顺连接不给服务器
华阴dell服务器
网络安全数据分类分级标准
天地劫幽城再临冥幻之阵服务器
网络安全 六防