当前位置: 首页 > news >正文

C#编程(七十六)----------使用指针实现基于栈的高性能数组

使用指针实现基于栈的高性能数组

以一个案例为主来分析实现方法:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

namespace 基于堆栈的数组

{

    class Program

    {

        static void Main(string[] args)

        {

            int[] i = new int[10];

            Console.WriteLine(i[1]);   

 

 

            /*使用指针优化性能

             使用关键字stackalloc创建基于堆栈的高效数组

             */

 

            unsafe

            {

                /*

                 * stackalloc命令只分配堆栈内存而已,不会把内存初始化为任何默认值

                 * 1.其后紧跟要存储数据类型名(该数据类型必须是值类型)

                 * 2.分配的字节数为变量个数*sizeof(数据类型)

                 */

 

                int* pInt = stackalloc int[10];

                *pInt = 0;

                *(pInt + 1) = 1;

                pInt[2] = 5;        //表达式被编译为*(pInt+2)

                pInt[50] = 100;     //不会报错,使用stackalloc声明相同数组,对数组边界检查,该数组黑没有封装任何对象

 

 

                Console.WriteLine(*(pInt+1));

                Console.WriteLine(pInt[2]);

                Console.WriteLine(*(pInt+3));

                Console.WriteLine(pInt[50]);

 

                Console.ReadKey();

            }

            

        }

    }

}

 

转载于:https://www.cnblogs.com/android-blogs/p/6638966.html

相关文章:

  • CSS-样式表的分类以及选择器的分类
  • childNodes与children
  • 发现一个很N且免费的html5拓扑图 关系图 生成组件
  • I2S
  • Oracle11g表空间导入dmp数据
  • Ambari里如何删除某指定的服务(图文详解)
  • CP-ABE ToolKit 安装笔记
  • js数组去重的三种常用方法总结
  • DPDK QoS之分层调度器
  • 对于文本框的验证(考虑兼容问题)
  • 114. Flatten Binary Tree to Linked List (leetcode)
  • 大数据与应用统计学的区别与联系
  • 在ElasticSearch中使用 IK 中文分词插件
  • Ubuntu 16.04 中安装谷歌 Chrome 浏览器
  • SSH使用密钥免密码登录
  • 「面试题」如何实现一个圣杯布局?
  • create-react-app做的留言板
  • Docker: 容器互访的三种方式
  • ES6系统学习----从Apollo Client看解构赋值
  • input实现文字超出省略号功能
  • Java-详解HashMap
  • js
  • JS函数式编程 数组部分风格 ES6版
  • Rancher-k8s加速安装文档
  • spring cloud gateway 源码解析(4)跨域问题处理
  • Vue官网教程学习过程中值得记录的一些事情
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 记录:CentOS7.2配置LNMP环境记录
  • 如何选择开源的机器学习框架?
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 一文看透浏览器架构
  • 一些关于Rust在2019年的思考
  • 正则表达式小结
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • ​什么是bug?bug的源头在哪里?
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • (八)Flask之app.route装饰器函数的参数
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (四)库存超卖案例实战——优化redis分布式锁
  • (转)Linux下编译安装log4cxx
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)
  • [8-23]知识梳理:文件系统、Bash基础特性、目录管理、文件管理、文本查看编辑处理...
  • [ACL2022] Text Smoothing: 一种在文本分类任务上的数据增强方法
  • [BZOJ1178][Apio2009]CONVENTION会议中心
  • [C#]手把手教你打造Socket的TCP通讯连接(一)
  • [c++] 什么是平凡类型,标准布局类型,POD类型,聚合体
  • [Excel VBA]单元格区域引用方式的小结
  • [flume$2]记录一个写自定义Flume拦截器遇到的错误
  • [HDU]2161Primes
  • [IE编程] IE 是如何决定Accept-Language 属性的
  • [ISCTF 2023]——Web、Misc较全详细Writeup、Re、Crypto部分Writeup