C#指针使用demo
#region 使用指针检索数据值
//class program
//{
// // 1、项目属性勾选“允许不安全代码”
// // 2、使用unsafe 修饰符
// // 这里是将整个Main方法声明为不安全代码
// //static unsafe void Main()
// static void Main()
// {
// // 当代码段被 unsafe 修饰符标记时,C# 允许该代码段中的函数使用指针变量,
// // 故使用了指针变量的代码块又被称为不安全代码或非托管代码。
// int var = 20; // // 将部分代码声明为不安全代码
// unsafe
// {
// int* p = &var;
// }
// } // public unsafe void swap(int* p, int* q)
// {
// int temp = *p;
// *p = *q;
// *q = temp;
// }
//}
#endregion #region 指针可以作为方法中的参数
// // using System;
// namespace UnsafeCodeApplication
// {
// class TestPointer
// {
// public unsafe void swap(int* p, int* q)
// {
// int temp = *p;
// *p = *q;
// *q = temp;
// }
// public unsafe static void Main()
// {
// TestPointer p = new TestPointer();
// int var1 = 10;
// int var2 = 20;
// int* x = &var1;
// int* y = &var2;
// Console.WriteLine("Before Swap: var1:{0}, var2: {1}", var1, var2);
// p.swap(x, y);
// Console.WriteLine("After Swap: var1:{0}, var2: {1}", var1, var2);
// Console.ReadKey();
// }
// }
// } #endregion #region 使用指针访问数组元素 fixed()
namespace UnsafeCodeApplication
{
//using System;
class TestPointer
{
public unsafe static void Main()
{
int[] list = { , , }; // !!引用类型 都需要fixed,防止垃圾回收导致内存地址变化
fixed (int* ptr = list)
/* let us have array address in pointer */
for (int i = ; i < ; i++)
{
Console.WriteLine("Address of list[{0}]={1}", i, (int)(ptr + i));
Console.WriteLine("Value of list[{0}]={1}", i, *(ptr + i));
}
Console.ReadKey();
}
}
}
#endregion
C#指针使用demo的更多相关文章
- C++11中智能指针的原理、使用、实现
目录 理解智能指针的原理 智能指针的使用 智能指针的设计和实现 1.智能指针的作用 C++程序设计中使用堆内存是非常频繁的操作,堆内存的申请和释放都由程序员自己管理.程序员自己管理堆内存可以提高了程序 ...
- C/C++ 类成员函数指针 类成员数据指针
普通函数指针: "return_type (*ptr_name)(para_types) " 类成员函数指针: "return_type (class_name::*p ...
- C++智能指针 原理、使用与实现
目录 理解智能指针的原理 智能指针的使用 智能指针的设计和实现 1.智能指针的作用 C++程序设计中使用堆内存是非常频繁的操作,堆内存的申请和释放都由程序员自己管理.程序员自己管理堆内存可以提高了程序 ...
- ca71a_c++_指向函数的指针_通过指针调用函数txwtech
/*ca71a_c++_指向函数的指针_通过指针调用函数用typedef简化函数指针的定义简化前: bool(*pf)(const string&, const string &); ...
- 了解javascript中的this --实例篇
对javascript this的赋值有了深一层的理解后,看一下比较复杂的情况,this的应用篇参考<对javascript this的理解>. #demo1 var name=" ...
- Java中的 内部类(吐血总结)
1. 内部类的作用 内部类是一个独立的实体,可以用来实现闭包:能与外部类通信:内部类与接口使得多继承更完整 2. 内部类的分类 1)普通内部类 类的实例相关,可以看成是一个实例变量.内部类的类名由 “ ...
- C++全总结
// CPPTEST.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include & ...
- 使用 Qt 获取 UDP 数据并显示成图片
一个项目,要接收 UDP 数据包,解析并获取其中的数据,主要根据解析出来的行号和序号将数据拼接起来,然后将拼接起来的数据(最重要的数据是 R.G.B 三个通道的像素值)显示在窗口中.考虑到每秒钟要接收 ...
- GNU中的关键字typeof
如果你是 C++ 程序员,应该接触过 C++11 里的 decltype 操作符,它的作用是自动推导表达式的数据类型,以解决泛型编程中有些类型由模板参数决定而难以(甚至不可能)表示的问题.其实这个特性 ...
随机推荐
- Linux下创建Oracle19C的数据库实例
接上一篇博客,安装 Oracle19chttps://www.cnblogs.com/xuzhaoyang/p/11264557.html 切换到root用户下,切换目录到db_1,执行,遇到选择路径 ...
- WIP*更新生产批详细信息行产品配料
DECLARE l_batch_header_rec gme_batch_header%ROWTYPE; l_material_detail_rec gme_material_details%ROWT ...
- Python解释器安装与环境变量添加
Python解释器安装与环境变量添加 Python解释器安装(3.6和2.7): www.python.org这个是python解释器的官网,一定要牢记. 鉴于市场上有两种python版本(2和3), ...
- ax 2012批处理不运行问题
最近在开发12的批处理,但是很奇怪所有的都配置好了就是不跑批处理,假如你也出现了那用下面的方法试试: 12的批处理和09不一样,不是运行x++代码,而且运行你CIL生成的DLL文件, 1.你必须让你的 ...
- Spring RestTemplate的使用示例
@Bean注册一个RestTemplate: 调用服务: 因为要参与网络传输,所以要实现序列化接口:
- VirtualBox安装文档教程
1找到安装包双击打开 2 3 这里可以更改安装路径 4 5 6 7 等待安装 8
- VS使用日常
一.快捷键 1.Ctrl R+E 选中变量快捷自动生成属性
- Python之TensorFlow的数据的读取与存储-2
一.我们都知道Python由于GIL的原因导致多线程并不是真正意义上的多线程.但是TensorFlow在做多线程使用的时候是吧GIL锁放开了的.所以TensorFlow是真正意义上的多线程.这里我们主 ...
- Libev库学习
Libev库学习 https://www.cnblogs.com/wunaozai/p/3950249.html Libev库学习(1)https://www.cnblogs.com/wunaozai ...
- React Native 开发豆瓣评分(六)添加字体图标
添加依赖 yarn add react-native-vector-icons Link 依赖 react-native link react-native-vector-icons 使用默认字体图标 ...