如何使用c#结构体
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,本篇内容主要讲解"如何使用c#结构体",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何使用c#结构体"吧!直接看c++和c#代码:struct struc
千家信息网最后更新 2025年11月07日如何使用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安全错误
数据库的锁怎样保障安全
网络技术和通信工程区别
权限系统的数据库设计
怎么看代理服务器地址
湖北人工智能软件开发价钱
数据库与金额有关的字段类型
服务器远程管理端口如何修改
冲绳软件开发招聘
acc数据库关系
企业简单数据库
达梦数据库怎么添加
数据库截取时间
技术软件开发好处
上海宁臣互联网科技公司靠谱么
网络安全手抄报20字内容
数据库传输速率秒级要求带宽
数据库 允许空字符串
jira的数据库配置文件
mysql 共享数据库
服务器搭建后台系统
玖富网络技术
文件服务器权限管理方法
地调数据用的数据库
含东数西算软件开发的个股
汽车制造行业网络安全
各类数据库的文献检索功能和特点
计算机网络技术聚飞专班
食品伙伴网官网数据库
智能推理算法在网络安全
数据库突然占内存
饥荒linux服务器