zoukankan      html  css  js  c++  java
  • 一个小例子说明堆栈、指针。

    class Program
        {
            //main栈区,用来存放Main方法中出现的变量
            static void Main(string[] args)
            {
                //创建一个对象时,系统内存中有两个东西:堆内存中保存了对象本身,栈内存中保存了引用该对象的引用变量。
                //new DataWrap()创建了一个DataWrap对象,DataWrap对象被存放在堆内存中
                //t=引用变量,来指向DataWrap对象
                DataWrap t = new DataWrap();
    
                //堆中开辟两块内存,一个放6,一个放9
                t.A = 6;
                t.B = 9;
    
                //再定义一个引用变量t2,t2也是指向DataWrap对象
                DataWrap t2 = t;
    
                //将堆内存中DataWrap对象的两个Field值交换
                Swap(t);
    
                //这个时候可以看到不管t还是t2,指针不变,所以显示的值都是96
                Console.Write(t.A);
                Console.Write(t.B);
                //96
                Console.Write(t2.A);
                Console.Write(t2.B);
                //96
    
                Console.ReadLine();
            }
    
            //Swap栈区,用来存放Swap方法中出现的变量
            //比如这里的t和Main()中的t完全是两码事
            private static void Swap(DataWrap t)
            {
                int temp = t.A;
                t.A = t.B;
                t.B = temp;
            }
        }
    
        public class DataWrap
        {
            public int A { get; set; }
            public int B { get; set; }
        }
  • 相关阅读:
    1."问吧APP"客户需求调查分析
    “软件工程”课程的学习目标
    范式
    知乎:有哪些让你相见恨晚的 PPT 制作技术或知识?
    前端指南
    在网页中JS函数自动执行常用三种方法
    index的用法
    搜索引擎的正确姿势
    display与visibility
    bootstrap之模态框
  • 原文地址:https://www.cnblogs.com/takako_mu/p/3672682.html
Copyright © 2011-2022 走看看