广告
返回顶部
首页 > 资讯 > 精选 >C#指针的用法介绍
  • 212
分享到

C#指针的用法介绍

2023-06-17 23:06:50 212人浏览 泡泡鱼
摘要

这篇文章主要讲解了“C#指针的用法介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#指针的用法介绍”吧!指针在C\c++里面可是一个好东西,但是到java,.net的时代指针已经被封装起

这篇文章主要讲解了“C#指针的用法介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#指针的用法介绍”吧!

指针在C\c++里面可是一个好东西,但是到java,.net的时代指针已经被封装起来,对用户不可见,这点java做的非常的彻底。.net可能因为还存在一个托管C++,因此指针并没有完全废除,C#还是保留了指针的操作。

要C#使用指针首先要对使用指针的代码用unsafe进行进行声明,声明和public声明一样,可以对整个类进行声明,也可以是类里面某个方法或者属性。在代码里什么后,还需要修改工程项目的Build属性,让编译器支持指针的操作。

做好事前的工作就可以C#使用指针了。指针的使用方法和C++下使用没有太多差别。只要编译器不报错就没有太大问题。

下面是对指针的一些使用上的理解:

指针类型可以是实体变量(int,double)也可以是enum,同时也支持结构体变量struct。但不能是类。不过空指针可以指向类,只不过空指针不能进行任何操作,也只能把空指针作为传递对象来使用。

C#提供一个的关键字stackalloc用于申请堆栈内存。注意,这个申请内存分配的是栈内存,当函数执行完毕后,内存会被自动回收。不过我想用这个栈内存基本可以解决40%的问题,而且使用的时候不必担心内存泄漏问题。

3 .net好像不直接支持堆内存的申请(这个对.net来说很危险),不过我们可以通过调用win32 api 的方法进行申请。这样就可以解决剩下40%的问题。堆内存申请的方法在MSDN里面有相关的文档,具体实现代码见附1。

4.结构体是一个特殊的对象。他与类的定义就差一个关键字,使用方法也和类一样,可以定义属性,可以定义方法。但是在进行指针操作的时候双方就有很大的差别了。结构体可以通过sizeof()取得大小,大小与结构体里有多少实体变量有关,但是如果struck里定义了类的对象,或者指针,sizeof可能会编译不过(void* 的空指针例外,不过需要在结构体声明处加上unsafe)。

fixed关键字:目前了解的不多,不过有一个很实用的例子可以让C#使用指针能够和.net里的数组进行交互操作:

byte[]buffer=newbyte[100];  fixed(byte*p=buffer)  {  P[0]=123;  ……  }

其它

publicunsafeclaSSMemory  {  //Handlefortheprocessheap.Thishandleisusedinallcallstothe  //HeapXXXAPIsinthemethodsbelow.  staticintph=GetProcessHeap();  //Privateinstanceconstructortopreventinstantiation.  privateMemory(){}  //Allocatesamemoryblockofthegivensize.Theallocatedmemoryis  //automaticallyinitializedtozero.  publicstaticvoid*Alloc(intsize)  {  void*result=HeapAlloc(ph,HEAP_ZERO_MEMORY,size);  if(result==null)thrownewOutOfMemoryException();  returnresult;  }  //Copiescountbytesfromsrctodst.Thesourceanddestination  //blocksarepermittedtooverlap.  publicstaticvoidCopy(void*src,void*dst,intcount)  {  byte*ps=(byte*)src;  byte*pd=(byte*)dst;  if(ps>pd)  {  for(;count!=0;count--)*pd++=*ps++;  }  elseif(ps<pd)  {  for(ps+=count,pd+=count;count!=0;count--)*--pd=*--ps;  }  }  //Freesamemoryblock.  publicstaticvoidFree(void*block)  {  if(!HeapFree(ph,0,block))thrownewInvalidOperationException();  }  //Re-allocatesamemoryblock.Ifthereallocationrequestisfora  //largersize,theadditionalregionofmemoryisautomatically  //initializedtozero.  publicstaticvoid*ReAlloc(void*block,intsize)  {  void*result=HeapReAlloc(ph,HEAP_ZERO_MEMORY,block,size);  if(result==null)thrownewOutOfMemoryException();  returnresult;  }  //Returnsthesizeofamemoryblock.  publicstaticintSizeOf(void*block)  {  intresult=HeapSize(ph,0,block);  if(result==-1)thrownewInvalidOperationException();  returnresult;  }  //HeapAPIflags  constintHEAP_ZERO_MEMORY=0x00000008;  //HeapAPIfunctions  [DllImport("kernel32")]  staticexternintGetProcessHeap();  [DllImport("kernel32")]  staticexternvoid*HeapAlloc(inthHeap,intflags,intsize);  [DllImport("kernel32")]  staticexternboolHeapFree(inthHeap,intflags,void*block);  [DllImport("kernel32")]  staticexternvoid*HeapReAlloc(inthHeap,intflags,  void*block,intsize);  [DllImport("kernel32")]  staticexternintHeapSize(inthHeap,intflags,void*block);  }

感谢各位的阅读,以上就是“C#指针的用法介绍”的内容了,经过本文的学习后,相信大家对C#指针的用法介绍这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: C#指针的用法介绍

本文链接: https://www.lsjlt.com/news/294377.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C#指针的用法介绍
    这篇文章主要讲解了“C#指针的用法介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#指针的用法介绍”吧!指针在C\C++里面可是一个好东西,但是到java,.net的时代指针已经被封装起...
    99+
    2023-06-17
  • C/C++指针介绍与使用详解
    目录什么是指针定义指针变量间接引用指针常or常常指向指针的指针指针与数组指针的运算堆内存分配C语言C++语言指针与函数数组名作为函数的入口参数函数名作为参数传入其他函数使用指针修改函...
    99+
    2022-11-13
  • C语言指针的详细介绍
    这篇文章主要介绍“C语言指针的详细介绍”,在日常操作中,相信很多人在C语言指针的详细介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言指针的详细介绍”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!目录...
    99+
    2023-06-20
  • C语言指针详细介绍
    本篇内容主要讲解“C语言指针详细介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言指针详细介绍”吧!指针对于C来说太重要。然而,想要全面理解指针,除了要对C语言有熟练的掌握外,还要有计算机...
    99+
    2023-06-15
  • C语言简明介绍指针的使用
    目录1. 指针类型2. 野指针3. 指针的运算3.1 指针+-整数3.2指针-指针3.3 指针的关系运算4. 指针数组1. 指针类型 指针以字节为单位; 指针类型决定了解引用时能访问...
    99+
    2022-11-13
  • C++中指针的详解及其作用介绍
    目录概述指向对象的指针指向对象数据成员的指针this 指针this 指针的作用this 指针的实现概述 指针 (pointer) 是一个变量, 其指为另一个变量的地址. 即内存位置的...
    99+
    2022-11-12
  • C++中关于this指针的入门介绍
    目录简介特性举例注意简介 C++编译器给每个“非静态的成员函数“增加了一个隐藏的指针参 数,让该指针指向当前对象(函数运行时调用该函数的对象),在函数体中所有...
    99+
    2022-11-13
  • C指针原理教程之Ncurses介绍
    Ncurses是一个用于编写基于文本终端的图形用户界面(GUI)的库。它提供了一些函数和数据结构,可以方便地处理终端窗口、颜色、字符...
    99+
    2023-08-16
    C
  • C++关于指针,继承和多态介绍
    目录指针指针和继承指针、继承和多态指针 我们在书本上学到的指针基本上都是:首先,指针是一个变量;其次,这个变量存储的值是一个地址。这个是对指针的一个基本理解,最近在编程中发现了一些新...
    99+
    2022-11-12
  • C++程序的函数指针实际操作介绍
    这篇文章主要介绍“C++程序的函数指针实际操作介绍”,在日常操作中,相信很多人在C++程序的函数指针实际操作介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++程序的函数指针实际操作介绍”的疑惑有所帮助!...
    99+
    2023-06-03
  • 如何进行C++函数指针的内容介绍
    如何进行C++函数指针的内容介绍,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。C++语言的原始版本是由C语言的一种叫C with Class的***版本演化而来的。之所以叫C+...
    99+
    2023-06-17
  • Go语言指针的详细介绍
    本篇内容介绍了“Go语言指针的详细介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Go语言为程序员提供了...
    99+
    2022-10-18
  • C语言一看就懂的指针与结构体介绍
    目录指针结构体指针 指针是C语言或者是c++里面最让人头疼的内容之一,正所谓指针在手,可以任指天下,这里只是简单的介绍指针的一些概念,后期我们将会深入剖析指针的基本原理。 注意:一个...
    99+
    2022-11-13
  • 深入理解c++指针的指针和指针的引用
    在C++中,指针是一种数据类型,可以存储变量的内存地址。指针的指针和指针的引用是两种特殊的指针类型。指针的指针是指一个指针变量的值是另一个指针的地址。也就是说,指针的指针存储的是一个指针变量的地址。可以通过多次间接引用来获取最终指向的变...
    99+
    2023-08-09
    c++
  • C++中指针的使用方法
    本篇内容主要讲解“C++中指针的使用方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++中指针的使用方法”吧!在C++编程中使用指针能有速度快,节约内存等优点,是很多C++程序员的***。但...
    99+
    2023-06-17
  • C#结构体指针的用法
    本篇内容介绍了“C#结构体指针的用法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!C#语言有很多值得学习的地方,这里我们主要介绍C#解析结构...
    99+
    2023-06-17
  • C++二级指针和指针的引用
    目录1、形参与实参均为指针时达不到此目的2、解决方案——指针引用或二级指针(1)形参为二级指针**p(2)形参为指针引用*&p3、总结 目的:形参指针...
    99+
    2022-11-13
  • C++野指针和悬空指针的实现方法
    目录一、野指针二、悬空指针2.1 情况一2.2 情况二2.3 情况三野指针和悬空指针是指针中常见的两个概念,本文结合实例讲解来讲解下。 一、野指针 野指针是指尚未初始化的指针,既不...
    99+
    2022-11-12
  • C#指针的实现方法
    本篇内容介绍了“C#指针的实现方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 指针类型可以是实体变量(int,double)也可以是...
    99+
    2023-06-18
  • Kubernetes探针使用介绍
    目录一、基本介绍Kubernetes 的探针有三种类型:探针方式:配置项:二、K8s 探针使用介绍1)就绪探针:2)存活探针:3)启动探针:一、基本介绍 当我们在 K8s 上运行应用...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作