Указатель
Тип int* задаёт указатель на int.
*p читает значение, &x
берёт адрес. Для массива используют
fixed
и индекс p[i] только внутри
границ массива. Контекст -
unsafe.
Синтаксис
int* p = &x;
int value = *p;
Пример
Давайте прочитать значение через *p:
using System;
class Program
{
static void Main()
{
int x = 12345;
unsafe
{
int* p = &x;
int res = *p;
Console.WriteLine(res);
}
}
}
Результат выполнения кода:
12345
Пример
Давайте прочитать p[1] внутри fixed:
using System;
class Program
{
static void Main()
{
int[] data = { 1, 2, 3 };
unsafe
{
fixed (int* p = data)
{
int res = p[1];
Console.WriteLine(res);
}
}
}
}
Результат выполнения кода:
2
Пример
Давайте сравнить *p и p[0]:
using System;
class Program
{
static void Main()
{
int[] data = { 1, 2, 3 };
unsafe
{
fixed (int* p = data)
{
bool res = *p == p[0];
Console.WriteLine(res);
}
}
}
}
Результат выполнения кода:
True
Смотрите также
-
unsafe,
где объявляютint* -
fixed,
массив дляp[i] -
ref-возврат,
ссылка без* -
stackalloc,
буфер на стеке