全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
指针在CC+里面可是一个好东西,但是到Java,.Net的时代指针已经被封装起来,对用户不可见,这点Java做的非常的彻底。.Net可能因为还存在一个托管C,因此指针并没有完全废除,C还是保留了指针的操作。 要使用指针首先要对使用指针的代码用unsafe进行进行声明,声明和public声明一样,可以对整个类进行声明,也可以是类里面某个方法或者属性。在代码里什么后,还需要修改工程项目的Build属性,让编译器支持指针的操作。 做好事前的工作就可以使用指针了。指针的使用方法和C下使用没有太多差别。只要编译器不报错就没有太大问题。 下面是对指针的一些使用上的理解:1 指针类型可以是实体变量(int,double)也可以是enum,同时也支持结构体变量struct。但不能是类。不过空指针可以指向类,只不过空指针不能进行任何操作,也只能把空指针作为传递对象来使用。2 C#提供一个的关键字stackalloc用于申请堆栈内存。注意,这个申请内存分配的是栈内存,当函数执行完毕后,内存会被自动回收。不过我想用这个栈内存基本可以解决40的问题,而且使用的时候不必担心内存泄漏问题。3 .Net 好像不直接支持堆内存的申请(这个对.Net来说很危险),不过我们可以通过调用win32 api 的方法进行申请。这样就可以解决剩下40%的问题。堆内存申请的方法在MSDN里面有相关的文档,具体实现代码见附1。4 结构体是一个特殊的对象。他与类的定义就差一个关键字,使用方法也和类一样,可以定义属性,可以定义方法。但是在进行指针操作的时候双方就有很大的差别了。结构体可以通过sizeof()取得大小,大小与结构体里有多少实体变量有关,但是如果struck里定义了类的对象,或者指针,sizeof可能会编译不过(void* 的空指针例外,不过需要在结构体声明处加上unsafe)。5 fixed关键字:目前了解的不多,不过有一个很实用的例子可以让指针能够和.Net里的数组进行交互操作: byte buffer = new byte100; fixed (byte* p = buffer) P0 = 123; 6 其它7 附1: public unsafe class Memory / Handle for the process heap. This handle is used in all calls to the / HeapXXX APIs in the methods below. static int ph = GetProcessHeap(); / Private instance constructor to prevent instantiation. private Memory() / Allocates a memory block of the given size. The allocated memory is / automatically initialized to zero. public static void* Alloc(int size) void* result = HeapAlloc(ph, HEAP_ZERO_MEMORY, size); if (result = null) throw new OutOfMemoryException(); return result; 很多人将C#和Java进行比较的时候,认为C#支持指针是C#的一个特点。我的个人观点认为任何事务应该一分为二的看,有利必然有弊。关于支持指针是好还是不好,不同的人有不同的看法,这个讨论很多。我们在此仅仅是讨论如何在C#中使用指针,并不是讨论它的利弊。1、修改工程配置工程中默认的配置是不支持代码的非安全性的,如果我们想使用指针就要修改这个默认的设置。否则我们在编译的时候就会出现“不安全代码只会在使用/unsafe编译的情况下出现”。项目- 属性- 配置属性- 生成,“允许不安全代码”设置成true 2、定义非安全代码在C#中如果想使用指针就需要将代码定义为unsafe。unsafe是C#中的一个关键字,我们可以将一个类、一个方法、代码块或者字段标记为unsafe。剩下的工作就和在其它语言中使用指针相同了。下面是一个使用指针的代码演示。 /将方法声明为非安全 public unsafe void Test() int i=10; int k; /定义指针 int *j; /给指针赋值 j=& i; /
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年黑龙江职业学院单招职业倾向性测试题库附答案
- 2025年郑州电子信息职业技术学院单招职业倾向性测试题库附答案
- 2026年西安海棠职业学院单招职业技能考试模拟测试卷附答案
- 2026年大庆职业学院单招职业适应性考试模拟测试卷附答案
- 2026年湖北三峡航空学院辅导员招聘备考题库附答案
- 2026年正德职业技术学院单招职业适应性测试题库附答案
- 2026年云南省昭通地区单招职业倾向性考试题库附答案
- 2026年桂林山水职业学院单招(计算机)测试备考题库附答案
- 2026年武汉工商学院辅导员招聘备考题库附答案
- 2026年齐鲁医药学院辅导员招聘备考题库附答案
- 2025陕西建工第九建设集团有限公司招聘(45人)笔试历年参考题库附带答案详解
- 贵州省黔东南州2024-2025学年八年级上学期语文期末文化水平考试试卷(含答案)
- 农业与科技兴农(第1课时)
- JJG 1149-2022 电动汽车非车载充电机(试行)
- 2025年山东省威海市荣成市辅警招聘考试题库附答案解析
- 妊娠合并子宫瘢痕的护理
- 【166题】2025年时事政治试题及答案
- 徐志摩诗歌创作艺术风格略论
- 教务管理岗位面试实战技巧
- 人民陪审员法深度解读
- 2025政策理论水平考核题目带答案
评论
0/150
提交评论