C#中使用指针

C#unsafe示例:使用fixed语句处理数组和指针
本文介绍了如何在C#中使用`unsafe`修饰符创建并操作数组指针,使用`fixed`语句锁定内存,确保数组在固定位置,以便于访问和调试。
部署运行你感兴趣的模型镜像
using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{
    int[] iArray = new int[10] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    void Start()
    {

        Method();
    }
    unsafe void Method()
    {
        fixed (int* ptr = &iArray[0])
        {
            for (int i = 0; i < iArray.Length; i++)
            {
                Debug.Log(*(ptr + i));//值
                //Debug.Log((int)(ptr + i));//地址
            } 
        }
    }
}

当一个代码块使用 unsafe 修饰符标记时,C# 允许在函数中使用指针变量。不安全代码或非托管代码是指使用了指针变量的代码块。

fixed 语句可防止垃圾回收器重新定位可移动的变量。 fixed 语句仅允许存在于不安全的上下文中。 因此在fixed(...){...}里数据的内存位置不会被改变,这样就可用指针来取数组中的值;

注:Debug.Log(*(ptr + i));中的+i的值指的是 指针移动当前指针类型的大小。指针类型为int、i=1时指针会移动4个字节;指针类型为byte、i=1时会移动1个字节的位置。

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值