PointerPlayaround.cs
上传用户:lxycoco
上传日期:2022-07-21
资源大小:38457k
文件大小:2k
源码类别:

C#编程

开发平台:

Others

  1. using System;
  2. namespace Wrox.ProCSharp.AdvancedCSharp
  3. {
  4.    class MainEntryPoint
  5.    {
  6.       static unsafe void Main()
  7.       {
  8.          int x=10;
  9.          short y = -1;
  10.          byte y2 = 4;
  11.          double z = 1.5;
  12.          int *pX = &x;
  13.          short *pY = &y;
  14.          double *pZ = &z;
  15.          Console.WriteLine(
  16.             "Address of x is 0x{0:X}, size is {1}, value is {2}", 
  17.             (uint)&x, sizeof(int), x);
  18.          Console.WriteLine(
  19.             "Address of y is 0x{0:X}, size is {1}, value is {2}", 
  20.             (uint)&y, sizeof(short), y);
  21.          Console.WriteLine(
  22.             "Address of y2 is 0x{0:X}, size is {1}, value is {2}", 
  23.             (uint)&y2, sizeof(byte), y2);
  24.          Console.WriteLine(
  25.             "Address of z is 0x{0:X}, size is {1}, value is {2}", 
  26.             (uint)&z, sizeof(double), z);
  27.          Console.WriteLine(
  28.             "Address of pX=&x is 0x{0:X}, size is {1}, value is 0x{2:X}", 
  29.             (uint)&pX, sizeof(int*), (uint)pX);
  30.          Console.WriteLine(
  31.             "Address of pY=&y is 0x{0:X}, size is {1}, value is 0x{2:X}", 
  32.             (uint)&pY, sizeof(short*), (uint)pY);
  33.          Console.WriteLine(
  34.             "Address of pZ=&z is 0x{0:X}, size is {1}, value is 0x{2:X}", 
  35.             (uint)&pZ, sizeof(double*), (uint)pZ);
  36.          *pX = 20;
  37.          Console.WriteLine("After setting *pX, x = {0}", x);
  38.          Console.WriteLine("*pX = {0}", *pX);
  39.          pZ = (double*)pX;
  40.          Console.WriteLine("x treated as a double = {0}", *pZ);
  41.          Console.ReadLine();
  42.       }
  43.    }
  44. }