C#查看各种变量的指针地址
来源:互联网 发布:网络犯罪 编辑:程序博客网 时间:2024/06/08 12:00
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication1{ struct XYZ { public int a; public int b; public int c; bool b1; }; class Program { //静态变量存储在堆上,查看指针时需用fixed固定 static int m_sZ = 100; //普通数据成员,也是放在堆上了,查看指针时需用fixed固定 int m_nData = 100; //等价于C/C++的 #define 语句,不分配内存 const int PI = 31415; //unsafe可以放在Main函数声明中!! static unsafe void Main(string[] args) { //简单的结构变量放在栈上,无需fixed XYZ stData = new XYZ(); stData.a = 100; Console.WriteLine("结构变量= 0x{0:x}", (int)&stData); //数组变量的声明放在了栈上,数据放在了堆上,需用fixed固定 int[] arry = null; arry = new int[10]; fixed(int *p = arry) { Console.WriteLine("array = 0x{0:x}", (int)p); } //这些放在栈上的变量,可以直接使用指针指向 //从打印的指针的数据看,int是4字节的,double是8字节的 int y = 10; int z = 100; double f = 0.90; Console.WriteLine("本地变量y = 0x{0:X}, z = 0x{1:X}", (int)&y, (int)&z); Console.WriteLine("本地变量f = 0x{0:X}", (int)&f); //下面失败 //fixed (int* p = &P.PI) //{ //} //放在堆里面的数据的地址,就必须用fixed语句! string ss = "Helo"; fixed(char *p = ss) { Console.WriteLine("字符串地址= 0x{0:x}", (int)p); } Program P = new Program(); //这个是类对象,放在堆里面 fixed(int *p = &P.m_nData) { Console.WriteLine("普通类成员变量 = 0x{0:X}", (int)p); } //静态成员变量在堆上 fixed(int *p = &m_sZ) { Console.WriteLine("静态成员变量 = 0x{0:X}", (int)p); } //下面是每种类型的占用字节个数 Console.Write("\n\n下面是每种类型的占用字节个数\n"); Console.WriteLine("sizeof(void *) = {0}", sizeof(void*)); Console.WriteLine("sizeof(int) = {0}, * = {1}", sizeof(int), sizeof(int*));//4 Console.WriteLine("sizeof(long) = {0}, * = {1}", sizeof(long), sizeof(long*));//8 Console.WriteLine("sizeof(byte) = {0}, * = {1}", sizeof(byte), sizeof(byte*));//1 Console.WriteLine("sizeof(bool) = {0}, * = {1}", sizeof(bool), sizeof(bool*));//1 Console.WriteLine("sizeof(float) = {0}, * = {1}", sizeof(float), sizeof(float*));//4 Console.WriteLine("sizeof(double) = {0}, * = {1}", sizeof(double), sizeof(double*));//8 Console.WriteLine("sizeof(decimal) = {0}, * = {1}", sizeof(decimal), sizeof(decimal*));//16 Console.WriteLine("sizeof(char) = {0}, * = {1}", sizeof(char), sizeof(char*));// Console.WriteLine("sizeof(XYZ) = {0}, * = {1}", sizeof(XYZ), sizeof(XYZ*));// //Console.WriteLine("sizeof(object) = {0}, * = {1}", sizeof(object), sizeof(object*));//16 //Console.WriteLine("sizeof(C) = {0}, * = {1}", sizeof(C), sizeof(C*));//16 } }}
输出结果:
- C#查看各种变量的指针地址
- C#查看变量的内存地址
- 变量的指针地址
- 变量的地址和指针
- 指针变量和指针变量的地址(c/c++)
- 变量指针和地址之间的关系
- 指针指向变量的首地址
- 查看变量地址
- 指针变量与变量地址
- C#查看access数据库的各种信息
- 指针变量的的各种自增 *p++
- unix下各种查看“变量”的命令比较
- 取址运行符是取指针的地址而不是取指针所指变量的地址
- 指针指向函数中的局部变量的地址的问题
- C语言输出指针变量地址以及指向变量的地址
- python中查看变量内存地址的方法
- 给指针变量赋地址
- C++学习总结_改变指针变量的地址
- 一次由重复索引导致的问题
- 关于Android发送短信字数问题的分析及解决方法
- android开发之ToggleButton的用法实现
- 【追寻javascript高手之路04】理解prototype
- eth_type_trans的处理流程图
- C#查看各种变量的指针地址
- Cyclical Quest CF235C
- 14-判断字符串中是否有英文(字符串处理)
- 并发场景下HashMap.get导致cpu耗光
- Android中如何修改系统时间(应用程序获得系统权限)
- NYOJ92-图像有用区域
- uva 1364 - Knights of the Round Table(点双连通分量,5级)
- seekg()/seekp()与tellg()/tellp()的用法详解
- 动态加载与插件系统的初步实现(三):WinForm示例