By reference.
Passing the address of the variable. Refering to the address of the variable in memory. since the address is passed we are manipulating the original. The asterisk will reference the address of the first item in an array (string, array list). The ampersand will reference the address of the item if it is of a singular nature.
char string [] = "string";
int x = 1;
char c = "c";
*string = the address of the first character in the
string -> "s". basically the address of the
string.
&string [3] = the address of the fourth character in the
string.
&x = the address of the x value.
&c = the address of the c value.
&string = not permissable since the string is stored in
more than one memory space. we are in effect
asking for the address of an address. not cool.
string = the adress of the string as a whole, which seems to differ programatically from the adress of the first character of the string. this will show up when you display the two in an edit box. this might also be written as (&string [0]).
create an edit box on a form and a string.
on the form show method write.
char *s = new char[10];
strcpy (s, "string"

;
Edit1->Text = *s;
change the right value (in this case *s) to &s, *s [3],
s, etc... some interesting things will become clear.
Please correct me if I am wrong. This is what I have come to understand. I would hope someone can shed more light on this and perhaps we all shall benefit. and please understand that the above is by far not complete.
Please refer to information on pointers and pointer arithmetic.