Pointer in Unsafe
Declaring a pointer

int* p1, p2, p3;   // Ok
int *p1, *p2, *p3;   // Invalid in C#

Example Description (This table is from msdn2 )
int* p p is a pointer to an integer
int** p p is a pointer to pointer to an integer
int*[] p p is a single-dimensional array of pointers to integers
char* p p is a pointer to a char
void* p p is a pointer to an unknown type
Operator/Statement Use
* to perform pointer indirection.
-> to access a member of a struct through a pointer.
[] to index a pointer.
& to obtain the address of a variable.
++ and -- to increment and decrement pointers.
+ and - to perform pointer arithmetic.
==, !=, <, >, <=, and >= to compare pointers.
stackalloc to allocate memory on the stack.
fixed statement to temporarily fix a variable in order that its address may be found.
Example

using System;
using System.Collections.Generic;
//csc unsafe/ unsafe_pointer.cs
namespace Test_This
{
class MainClass
{
public static void Main(string[] args)
{
Console.WriteLine("Hello World!");
//Process pp = new Process();
Process.method_1();
}
}
class Process
{
unsafe public static void method_1()
{
int count = 99;
int* p; // create an int pointer
p = &count; // put address of count into p
Console.WriteLine("Initial value of count is " + *p);
*p = 10; // assign 10 to count via p
Console.WriteLine("New value of count is " + *p);
}
}
}