首页 > 代码库 > C#之指针操作
C#之指针操作
之前听人说C#没有指针,因为不安全,百度了一下是这么说的:
现在因为工作需要操作硬件看门狗,知道原来C#也是可以操作指针的。
程序环境:.NET MicroFramework
开发工具:VisualStudio 2013
开发语言:C#
通信工具:新生命神码工具
程序功能:我们的开发硬件在特殊外围情况下可能会出新死机现象。解决方法是通过看门狗程序发现死机,然后C#让MCU指针复位。让MCU重启。
C#操作单片机指针
程序操作如下:
代码:
using System;using Microsoft.SPOT;using System.Threading;namespace DoItError{ /// <summary> /// 项目属性中选择生成 /// 生成 中勾选“允许不安全的代码” /// 类中标记 unsafe 修饰符 允许使用指针 /// </summary> public class Program { /// <summary>搞死硬件</summary> public static void Main() { int a = 0; while (true) { a++; Thread.Sleep(1000); Debug.Print(a.ToString()); if (a == 20) { Debug.Print("----------执行------------"); new testclass().todo(); return; } } } public unsafe class testclass { public void todo() { //声明一个指针 int* i; //为指针赋值,指向一个不存在的内存地址 i = (int*)0x00000000; //获取这个指针 var j = *i; } } }}
上面的代码实现功能:计数,20秒后单片机死机,重启继续开始。
当然C#是支持指针运算符操作的,只是为了安全VS将指针功能关闭编译,我们需要打开;
解决办法
1、设置VS 项目中“属性”→“生成” 勾选“允许不安全代码”
2、在MF程序使用指针的类上加上 unsafe 修饰符。
3、声明一个指针 int * i;为i赋值一个不存在的内存地址 i=(int *)0x00000000; 取值: var j = *i;
这样VS就支持指针编译了。
然后硬件输出。
例程下载:CSharp操作指针.rar
大热天口干舌燥的,大晚上还在敲代码的都很辛苦了。发张美女给大家降降温。
欢迎大家一起交流 ,分享程序员励志故事。 幸福的程序员 QQ群:
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。