Obtaining the Address of a Variable (C# Programming Guide)
To obtain the address of a unary expression, which evaluates to a fixed variable, use the address-of expression. The expression takes the form:
&unary expression
Parameters
- &
The address-of operator
- unary expression
An expression that evaluates to a fixed variable.
Remarks
If the unary expression is classified as a volatile field, or moveable variable, you can use the fixed statement to temporarily fix the variable before obtaining its address.
It is your responsibility to ensure that the variable is initialized. The compiler will not issue an error message if the variable is not initialized.
You cannot get the address of a constant or a value.
Example
In this example, a pointer to int, p
, is declared and assigned the address of an integer variable, number
. The variable number
is initialized as a result of the assignment to *p. Commenting this assignment statement will remove the initialization of the variable number
, but no compile-time error is issued. Notice the use of the Member Access operator -> to obtain and display the address stored in the pointer.
// compile with: /unsafe
class AddressOfOperator
{
static void Main()
{
int number;
unsafe
{
// Assign the address of number to a pointer:
int* p = &number;
// Commenting the following statement will remove the
// initialization of number.
*p = 0xffff;
// Print the value of *p:
System.Console.WriteLine("Value at the location pointed to by p: {0:X}", *p);
// Print the address stored in p:
System.Console.WriteLine("The address stored in p: {0}", p->ToString());
}
// Print the value of the variable number:
System.Console.WriteLine("Value of the variable number: {0:X}", number);
}
}
Output
Value at the location pointed to by p: FFFF
The address stored in p: 65535
Value of the variable number: FFFF
See Also
Reference
Pointer Expressions (C# Programming Guide)
Pointer types (C# Programming Guide)
unsafe (C# Reference)
fixed Statement (C# Reference)
stackalloc (C# Reference)