如何使用c#结构体
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,本篇内容主要讲解"如何使用c#结构体",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何使用c#结构体"吧!直接看c++和c#代码:struct struc
千家信息网最后更新 2025年01月20日如何使用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安全错误
数据库的锁怎样保障安全
ipad软件开发程序
工业软件开发技术专业课程
mbd数据库连接工具
13年软考数据库系统工程师
网络安全图绘画
如何访问串口服务器
未成年人网络安全教育
软件开发专业英文
2017年软考数据库答案
印度 网络安全战略
医院疫情防控网络安全
怎么卸载数据库
安装www服务器
服务器异常无法保障计算机安全
网络安全强制标准的案例
无线路由器提示服务器异常
服务器主机区域名
dcs蕉流服务器
数据库报表的定义
邮件服务器 imail
网络安全清单整改措施
amd gpu服务器租用
网络安全中心工作内容
数据库锁定类型
重庆快成网络技术
公安部网络安全领导小组
服务器数据库改变吗
spss建立数据库文件的格式
服务器外部访问
学网络技术好还是学电气自动化好