C# 指针、地址与公共语言基础结构详解
指针与地址相关要点
栈空间是宝贵的资源,通常程序的栈空间小于 1MB,栈空间耗尽会导致程序崩溃,因此要避免在栈上分配任意大小的缓冲区。
解引用指针是访问指针所引用变量中存储数据的操作,需在表达式前放置间接运算符。例如byte data = *pData;会解引用pData所指向的字节位置,并返回该位置的单个字节。
在不安全代码中运用此原理,可实现修改“不可变”字符串的非常规操作,不过不建议这么做,但它展示了底层内存操作的潜力。以下是示例代码:
string text = "S5280ft"; Console.Write("{0} = ", text); unsafe // Requires /unsafe switch. { fixed (char* pText = text) { char* p = pText; *++p = 'm'; *++p = 'i'; *++p = 'l'; *++p = 'e'; *++p = ' '; *++p = ' '; } } Console.WriteLine(text);输出结果为:
S5280ft = Smile在这个例子中,使用前置递增运算符将原始地址按引用类型的大小(