C# Pointer指针应用实例简述

本文所述为在C#中使用Pointer指针的简单示例,非常适合新手参考学习。该实例演示了字符串的加密及解密的过程,将字符串指针p指向字符数组b,并将参数p传给函数,以及对给定字符串进行加密处理。

具体实例代码如下:

using System;
namespace PointerDemo
{
 public class PointerDemo
 {
 public static void Main()
 {
  string s = "Hello Csharp!"; // 原字符串
  Console.Write("the original string: ");
  Console.WriteLine("{0}\r\n", s);
  char[] b = new char[100];
  s.CopyTo(0,b,0,13);
  Console.Write("the encoded string: ");
  // 使用不安全代码
  unsafe
  {
  // 加密过程
  // 将字符串指针p指向字符数组b,并将参数p传给函数
  fixed(char *p = b) NEncodeDecode(p);
  }
  for(int i = 0; i < 13; i++)
  Console.Write(b[i]);
  Console.WriteLine("\r\n");
   Console.Write("the decoded string: ");
  unsafe
  {
  // 解密过程
  fixed(char *p = b)NEncodeDecode(p);
  }
  for(int i = 0; i < 20; i++)
  Console.Write(b[i]);
  int t = 2;
  t = t^5;
  Console.WriteLine(t);
  Console.WriteLine();
 }
 // 对给定字符串进行加密处理
 unsafe public static void NEncodeDecode(char *s)
 {
  int w;
  for(int y = 0; y < 13; y++)
  {
  w = (int) *(s + y);
  w = w^5; // 异或运算
  *(s + y) = (char)w;
  }
 }
 }
}
(0)

相关推荐

  • C#委托所蕴含的函数指针概念详细解析

    原则: 1.函数指针,实际上是函数编码后的指令在内存中的首地址,在C++/C中,这个地址可以用函数名直接使用 一个函数调用另一个函数的时候,就可以把被调用函数以函数指针的形式作为参数传入 2.回调函数callback使用的技术就是函数指针: 回调函数就好像是一个中断处理函数,系统在符合你设定的条件时自动调用.为此,你需要做三件事: 1). 声明: 2). 定义: 3). 设置触发条件,就是在你的函数中把你的回调函数名称转化为地址作为一个参数,以便于DLL调用. 回调函数是应用程序提供给Windo

  • 浅谈C#指针问题

    花了很长时间的实践,终于搞清楚了.类或者链表等,在指针赋值的时候,会使用新的指针.比如: Foo a = c; Foo b = new Foo(); Foo a = b; 这种情况下,会把b的指针传给a,a不再指向c,a以后的操作都会对b生效. 如下情况下: Foo b = new Foo(); Foo a{get {return b;}} 这种情况下,表示a无法被修改,但是如果你a.bar = 5;的话,那么是可以修改的,为什么呢?因为此时任何针对a的属性的修改,本质上都是对b的修改,只有a

  • C#中this指针的用法示例

    本文实例展示了C#中this指针的用法,对于初学者进一步牢固掌握C#有很大帮助,具体内容如下: 一.this指针是什么: 这里有一些面向对象编程的概念需要说明:类(Class)的概念和对象(Object)的概念 类是对事物概括,也是C#编码时所有代码归属的基本单位:而对象是对类的实例化,也就是C#里new方法的返回值.写代码是不能直接用操作类,而只能先实例化类,然后我们用这个类被实例化后的对象. 通俗一些的说明是,"类"好比是"人"的概念,而我们把类实例化后,就成为

  • C#通过指针实现快速拷贝的方法

    本文实例讲述了C#通过指针实现快速拷贝的方法.分享给大家供大家参考.具体实现方法如下: // fastcopy.cs // 编译时使用:/unsafe using System; class Test { // unsafe 关键字允许在下列 // 方法中使用指针: static unsafe void Copy(byte[] src, int srcIndex, byte[] dst, int dstIndex, int count) { if (src == null || srcIndex

  • C#通过指针读取文件的方法

    本文实例讲述了C#通过指针读取文件的方法.分享给大家供大家参考.具体如下: // readfile.cs // 编译时使用:/unsafe // 参数:readfile.txt // 使用该程序读并显示文本文件. using System; using System.Runtime.InteropServices; using System.Text; class FileReader { const uint GENERIC_READ = 0x80000000; const uint OPEN

  • c# List find()方法返回值的问题说明(返回结果为对象的指针)

    C#中List<T>中泛型T如果是一个对象的话,则利用Find函数返回的将是这个对象的指针,对其返回对象的属性进行操作,也会影响list中相应元素对象的值.验证如下:1.新建一个Class1类,其含有两个姓名和分数两个属性: 复制代码 代码如下: <SPAN style="FONT-SIZE: 18px">    public class Class1    {        public string name{ get; set; }        publ

  • C# Pointer指针应用实例简述

    本文所述为在C#中使用Pointer指针的简单示例,非常适合新手参考学习.该实例演示了字符串的加密及解密的过程,将字符串指针p指向字符数组b,并将参数p传给函数,以及对给定字符串进行加密处理. 具体实例代码如下: using System; namespace PointerDemo { public class PointerDemo { public static void Main() { string s = "Hello Csharp!"; // 原字符串 Console.W

  • C++中回调函数及函数指针的实例详解

    C++中回调函数及函数指针的实例详解 如何获取到类中函数指针 实现代码: //A类与B类的定义 class A { public: void Test() { cout << "A::Test()" << endl; } }; class B : public A { public: void Test() { cout << "B::Test()" << endl; } }; //定义类的成员函数指针 typedef

  • C语言中二级指针的实例详解

    C语言中二级指针的实例详解 用图说明 示例代码: #include <stdio.h> int main(int argc, const char * argv[]) { // int a = 5; int *p1 = &a; //-打印地址-----地址相同--------------- printf("&a = %p\n", &a);// printf("p1 = %p\n", p1);// int **p2 = &p

  • C语言中枚举与指针的实例详解

     C语言中枚举与指针的实例详解 总结一下, 定义枚举,用typedef enum关键字, 比如 typedef enum{Red,Green,Blue} Color3; 枚举到数值的转换,如果没有指定代表数值就是从0开始算, 比如 Color3 c=Red; printf("%d",c);会显示0, 除非指定 如typedef enum{Red=3,Green=5,Blue=10} Color3; 关于类型指针的定义, 定义的时候在变量名左边加*代表此变量只是一个空指针而已, 若需要赋

  • C语言中 值传递和指针传递实例详解

    C语言中 值传递和指针传递实例详解 在C语言中,函数的参数和返回值的传递方式有两种:值传递和指针传递. 值传递和指针传递初学者总会有一种朦胧的感觉,所以建议把指针传递的概念摸透,才能熟练应用. 值传递示例:x其实是n的一份临时拷贝,所以并不会改变n的值. #include <stdio.h> #include <windows.h> void Fun(int x) { x = 1; } int main() { int n = 2; Fun(n); printf("%d\

  • C++中用new创建二维数组和指针数组实例代码

    使用new 创建二维数组方法 #include <iostream> using namespace std; void main() { //用new创建一个二维数组,有两种方法,是等价的 //一: int (*p)[10] = new int[5][10]; //二: int **p = new int* [5]; for(int i=0;i <5;i++) p[i] = new int[10]; //指针数组的创建,也有两种方法 //一: char **pa = new char*

  • Go语言中的指针运算实例分析

    本文实例分析了Go语言中的指针运算方法.分享给大家供大家参考.具体分析如下: Go语言的语法上是不支持指针运算的,所有指针都在可控的一个范围内使用,没有C语言的*void然后随意转换指针类型这样的东西.最近在思考Go如何操作共享内存,共享内存就需要把指针转成不同类型或者对指针进行运算再获取数据. 这里对Go语言内置的unsafe模块做了一个实验,发现通过unsafe模块,Go语言一样可以做指针运算,只是比C的方式繁琐一些,但是理解上是一样的. 下面是实验代码: 复制代码 代码如下: packag

  • PHP中$this和$that指针使用实例

    PHP5中定义了一个特殊的方法名"__clone()"方法,是在对象克隆时自动调用的方法,用"__clone()"方法将建立一个与原对象拥有相同属性和方法的对象,如果想在克隆后改变原对象的内容,需要在__clone()中重写原本的属性和方法,"__clone()"方法可以没有参数,它自动包含$this和$that两个指针,$this指向复本,而$that指向原本,具体实例如下: 复制代码 代码如下: <?php class Person {

  • thinkphp模板继承实例简述

    本文实例讲述了thinkphp模板继承的实现方法.分享给大家供大家参考.具体实现方法如下: 模板的继承: 复制代码 代码如下: <block name='top'></block><!--这是父级模板--> <div style='border:1px solid gray;background:#abcdef;height:100px;'>广告部分</div> <block name='body'></block> &l

  • Java单例模式实例简述

    本文实例讲述了Java的单例模式,是Java程序设计中非常重要的概念.分享给大家供大家参考.具体分析如下: 所谓单子模式就是在整个应用过程中只向外界提供唯一的一份实例,也就是说在应用时只有一个实例,这样也就不用反反复复的创建实例了.那么根据他的要求,看下面一个最简单的单例模式的代码: public class Singleton { private static Singleton single = new Singleton(); private Singleton(){ } public s

随机推荐