如何:通过指针访问数组元素(C# 编程指南) - C# 编程指南

返回介绍

如何:通过指针访问数组元素(C# 编程指南)

发布于 2019-11-12 字数1958 浏览 838 评论 0

在不安全的上下文中,可通过使用指针元素访问来访问内存中的元素,如下面的示例所示:

  复制代码
       char* charPointer = stackalloc char[123];
      for (int i = 65; i < 123; i++)
      {
          charPointer[i] = (char)i; //access array elements
      }

方括号中的表达式必须能够隐式转换为 int、uint、long 或 ulong。操作 p[e] 等效于 *(p+e)。与 C 和 C++ 一样,指针元素访问不检查越界错误。

示例

在此示例中,123 内存位置被分配给字符数组 charPointer。该数组用于在两个 for 循环中显示小写字母和大写字母。

请注意,表达式 charPointer[i] 等效于表达式 *(charPointer + i),使用这两个表达式可获得相同的结果。

C#  复制代码
// compile with: /unsafe

C#  复制代码
class Pointers
{
    unsafe static void Main() 
    {
        char* charPointer = stackalloc char[123];

        for (int i = 65; i < 123; i++)
        {
            charPointer[i] = (char)i;
        }

        // Print uppercase letters:
        System.Console.WriteLine("Uppercase letters:");
        for (int i = 65; i < 91; i++)
        {
            System.Console.Write(charPointer[i]);
        }
        System.Console.WriteLine();

        // Print lowercase letters:
        System.Console.WriteLine("Lowercase letters:");
        for (int i = 97; i < 123; i++)
        {
            System.Console.Write(charPointer[i]);
        }
    }
}

  复制代码
Uppercase letters:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
Lowercase letters:
abcdefghijklmnopqrstuvwxyz

请参见

概念

C# 编程指南

参考

指针表达式(C# 编程指南)指针类型(C# 编程指南)unsafe(C# 参考)fixed 语句(C# 参考)stackalloc(C# 参考)

其他资源

类型(C# 参考)

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

目前还没有任何评论,快来抢沙发吧!