You can determine the address if any variable, array, or label, peek/poke anywhere, and it does have pointers and @pointer addressing, although I seldom use them. Pointers to structures are allowed, too. But there's no mechanism to make a call through a pointer, as I recall, unless you drop into assembly.
PowerBasic does have nice CASE constructs, and ON...GOTO and ON...GOSUB for dispatching on a value.
I mostly stick to classic subscripts and standard control structures, and seldom use pointers.
If you use the GOSUB thing, there are no passed paramaters... everything is global, which is usually what I want anyhow. If you use formal subroutines, you can declare subroutines that pass by value or by reference. The default is by reference.
The world provides plenty of opportunities to prove how smart you are, if that's what you want to do. Programming is not the place to do that.
Of course I do the important stuff, the embedded code, in 68K assembly, where you can do anything you want.
John