C#指针一些操作


在C#中可以在unsafe模式下使用指针。


一些使用测试:

int a 和 int b; 显示他们  的地址   

int abc 来存储a的地址。  

 int * ppp指针 用上面abc的地址给这指针赋值。


 unsafe static void Main(string[] args)
        {
            int a = 2;
         int b = 33;
        

            int* p1= &a;
            Console.WriteLine("a地址:" + (int)p1);
            Console.WriteLine("a值:" + *p1);




            Console.WriteLine("a+1地址对应的值:" + *(p1 +1));


            int abc = (int)&a;

            Console.WriteLine("abc:" + abc);


            Console.WriteLine("abc:" + (int)&abc);

            int* ppp = (int*)(abc+4);
           // ppp = (int*)abc;

            Console.WriteLine("哈哈 ,以abc为地址的值:" + *ppp);
         }

结果:

a地址:482534208

a值:2

a+1地址对应的值:33;

abc:482534208

abc:482534232

哈哈,以abc为地址的值:33


我发现a和b在内存中内存地址相差4,因为int类型是4个字节。 所以上面*(p+1)指向b  下面有(int*)(abc+4) 也指向b   

 int *ppp=(int*)(abc+4); 这句话也可以写成 int* ppp=(int*)abc+1;


ok






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值