Assume that you have a string "Hello World". You want to pass this to a function UCase().

Instead of passing the whole string you can pass a pointer to the string. When you pass a pointer to a string, the pointer contains the address on the first char (H in this case). The function will read each char until it reaches the Null terminator (Used in C/C++ to determine the end of a string in memory)

As a further note. VB always passes a string as a pointer even when you use ByVal.

Hope you understand the above, if not I will clarify for you.