C# 指针用法小结
i=0
i=1
px2[0]=1
px2[0]=101
p2:3,x2:201,3,8
px2 convert to nint value:176251454976
px2 convert to nuint value:176251454976
px4[0][0]:4
px4[0][0]:5
px4[0][0]:6
px4_1[0]:4
px4_1[1]:5
px4_1[2]:6
*px4[0]:4
*px4[1]:5
*px4[2]:6
x4:4,5,6
x4:5,5,6
C#指针又学到两个新东西,注意避坑,分享 ,1: *t 和 t[0] 等价; 2: fixed 里 p[0] == fixed 外的 p[0][0]亦即(*p)[0] ;fixed(T* p=arr) 外面只能写成 T*p=&arr; 3: T* p; p+=1 ; 相当于 (nint)p+=sizeof(T); 4: 对于通过nint/nuint来进行指针赋值的时候要这样写 "*(T*)nintValue " 这种写法可以赋值也可以取值
C# 指针冷知识: 1,T* p = &arr; 在fixed(T* p= arr){/*...*} ; 2, *p 也可以写成 p[0]; 3, 与 nint/nuint 互相转换, p+=1; 相当于 (nint)p+=sizeof(T);
var p=new int[]{1,2,3} ; 相当于 int[]* p=new int[]{1,2,3}; 在fixed外,不能够 int* p=arr[0]; 要在fixed里面; 而 C#的 malloc 是 NativeMemory.Alloc(n); 从这里可以直接返回一个 void* 可以转成 任务指针, 象基础byte* 所以 byte* p 可以直接 p[i] 进行愉快的运算,而 若是 在 T[]* p 的话 需要先 p[0] 或 *p 再 索引 就是 p[0][i] 或(*p)[i] 有点烦索
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话