, , , . , .
, , . , float double. void*.
, , , (ip) (fp). .
// .
Using System;
class PtrArithDemo {
unsafe static void Main() { int x; int i; double d;
int* ip = &i; double* fp = &d;
Console.WriteLine("int double\n");
for(x=0; x < 10; x++) {
Console.WriteLine((uint) (ip) + " " + (uint) (fp)); ip++; fp++;
}
}
}
. , .
Int double
1243464 1243468 1243468 1243476 1243472 1243484 1243476 1243492 1243480 1243500
1243484 1243508 1243488 1243516 1243492 1243524 1243496 1243532 1243500 1243540
, . , int 4 , double 8 , .
, ==, < >. , - . , pi 2 , , , . pi 2 , , .
C# . , fixed . .
/* . */
Using System;
class PtrArray {
|
|
unsafe static void Main() { int[] nums = new int[10];
fixed(int* p = &nums[0], p2 = nums) { if(p == p2)
Console.WriteLine(" p p2 " +
" .");
}
}
}
.
2
, &nums[0]
Nums
. , , .
, . . .
// .
Using System;
class PtrlndexDemo {
unsafe static void Main() { int[] nums = new int [10];
// .
Console.WriteLine(" ."); fixed (int* p = nums) { for(int i=0; i < 10; i++)
p[i] = i; //
forjint i=0; i < 10; i++)
Console.WriteLine("p[{0}]: {1} ", i, p[i]);
}
// .
Console.WriteLine(" " +
" ."); fixed (int* = nums) { for(int i=0; i < 10; i++)
* (p+i) = i; //
for(int i=0; i < 10; i++)
Console.WriteLine("*(p+{0}): {1} ", i, *(p+i));
}
}
}