c#指针和寻址运算
2016-04-12 12:56
239 查看
一、指针和寻址运算
指针格式:<类型>*<变量>
寻址格式:&<变量>
以下程序的运行结果为
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/27/896b6b65a55c8e6b20ffbd9ad8bf07bd.jpg)
![](http://www.cnblogs.com/cby-love/p/file:/C:/Users/dcui/AppData/Local/YNote/data/cuibinyu132@163.com/6c3613523f614093944ac14223d1f777/clipboard.png)
注意:每次运行程序时第一行显示的地址都不会一样。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
using System.Data;
using System.Collections;
namespace ConsoleApplication3
{
public class program:IDisposable
{
public program()
{
Console.WriteLine("创建对象");
}
public void Dispose()
{
Console.WriteLine("释放了对象");
}
static void Main(string[] args)
{
unsafe
{
int num = 10;
Console.WriteLine("内容为{0}",(long) &num);
int* point = #
Console.WriteLine("num={0}", num);
Console.WriteLine("*point{0}", (int)*point);
num = 34;
Console.WriteLine("num={0}", num);
Console.WriteLine("*point{0}", (int)*point);
Console.ReadKey();
}
}
}
}
二、sizeof运算符用于给出非托管类型所占用的大小,单位是字节。
总结:指针和寻址操作,实际上是对内存做直接的访问,所以我们在使用时应格外小心。当然对于内存的直接操作带来的一个明显的好处是性能的提升。但是有时候我们必须在性能与稳定性、正确性之间做出权衡。
指针格式:<类型>*<变量>
寻址格式:&<变量>
以下程序的运行结果为
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/27/896b6b65a55c8e6b20ffbd9ad8bf07bd.jpg)
![](http://www.cnblogs.com/cby-love/p/file:/C:/Users/dcui/AppData/Local/YNote/data/cuibinyu132@163.com/6c3613523f614093944ac14223d1f777/clipboard.png)
注意:每次运行程序时第一行显示的地址都不会一样。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
using System.Data;
using System.Collections;
namespace ConsoleApplication3
{
public class program:IDisposable
{
public program()
{
Console.WriteLine("创建对象");
}
public void Dispose()
{
Console.WriteLine("释放了对象");
}
static void Main(string[] args)
{
unsafe
{
int num = 10;
Console.WriteLine("内容为{0}",(long) &num);
int* point = #
Console.WriteLine("num={0}", num);
Console.WriteLine("*point{0}", (int)*point);
num = 34;
Console.WriteLine("num={0}", num);
Console.WriteLine("*point{0}", (int)*point);
Console.ReadKey();
}
}
}
}
二、sizeof运算符用于给出非托管类型所占用的大小,单位是字节。
总结:指针和寻址操作,实际上是对内存做直接的访问,所以我们在使用时应格外小心。当然对于内存的直接操作带来的一个明显的好处是性能的提升。但是有时候我们必须在性能与稳定性、正确性之间做出权衡。
相关文章推荐
- [C#] 静态方式实现的单例是不是懒汉模式?
- C#界面控件DotNetBar使用详解
- c#程序内存分配
- myself C# template 格式规范
- WindowsCE project missing Microsoft.CompactFramework.CSharp.targets in Visual Studio 2008
- [转]C# 线程知识--使用Task执行异步操作
- C# 开启大地址内存以应对32位机器内存不够用问题
- C#基础(二)
- C# WinForm 技巧:COMBOBOX搜索提示
- C# 通过socket实现UDP 通信
- C#中的委托和事件
- C#中的 .NET 弱事件模式
- C# WinForm导出Excel方法介绍
- leetcode 7: Reverse integer (C#版)
- 常用C#关键字详解教程(比较全面)
- C# AES 加解密处理
- C# 设计基础(一)
- 常用C#关键字详解教程(比较全面)
- C#入门
- C# chart控件绘制多图表区图像