Hey ,
To answer your second question first, if you are passing a pointer into a function it is always being passed as a reference. So in the case of your question they are one in the same.
For the first question, consider the code “FVector TeleportEndPoint;” This is a variable of an Unreal type, so if your function “void FindTeleportEnd(FVector)” would be considered a pass-by-value that expects the Unreal type of FVector. The important thing to remember is that when you use pass-by-value, it will create a copy of the variable and work on that copy within the function. When the function ends, the copy no longer exists and the original variable remains unchanged. If you use pass-by-reference instead, it passes the original variable into the function and any changes to the variable within the function will change the original variable as well. This will usually be considered more performant since it is not going through the overhead of creating a copy, but can also lead to problems since it gives the function direct access to the variable.