another newbie pointer question

Hello,
Im just starting to get a grasp of pointers. I’m told they work really well for passing arrays to functions.

I made this program last night that gets a temp reading from a OneWire sensor and then prints elapsed time. It does this in two ways; passing the global address array to a function that takes it in as a pointer and the other function doesnt get passed the array at all, it just uses the global array when talking to the sensor. On average, the pointer function was 220 microseconds quicker but uses 6 more bytes of instruction memory.

#include <OneWire.h>
#include <Wire.h>
#include <Adafruit_MCP23017.h>
#include <Adafruit_RGBLCDShield.h>


#define oneWireBus 2
byte address[8];
OneWire oneWire(oneWireBus);

Adafruit_RGBLCDShield lcd = Adafruit_RGBLCDShield();

float temp;
unsigned long lastTime = 0, currentTime = 0;

void setup() {
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  digitalWrite(3, HIGH);
  digitalWrite(4, LOW);
  lcd.begin(16, 2);
  lcd.print(F("oneWire temp ptr"));
  Serial.begin(19200);
  delay(1000);
  lcd.clear();
  oneWire.search(address);

}

void loop() {
  currentTime = micros();
  temp = getOneWireTemp(address);
  lastTime = micros();
  Serial.print(F("temp is: "));
  Serial.print(temp);
  Serial.print(F("C.  It took "));
  Serial.print(lastTime - currentTime);
  Serial.println(F(" ms.")); //takes 9400/474
  
  currentTime = micros();
  temp = getOneWireTemp2();
  lastTime = micros();
  Serial.print(F("temp2 is: "));
  Serial.print(temp);
  Serial.print(F("C.  It took "));
  Serial.print(lastTime - currentTime);
  Serial.println(F(" ms.")); //takes 9394/474. 
  delay(500);
}

float getOneWireTemp(byte *str) { //get OneWire temp.
  byte data[2]; //array to store data retrieved from sensor.
  oneWire.reset();
  oneWire.select(str);
  oneWire.write(0x44, 1); //start conversion.
  oneWire.reset();
  oneWire.select(str);
  oneWire.write(0xBE); //read scratchpad.
  
  for (byte i = 0; i < 2; i ++) {
    data[i] = oneWire.read(); //collect data.
  } //end for.
  
  int16_t raw = (data[1] << 8) | data[0]; //convert raw data to C.
 
  return (float)raw / 16.0;
} //end getOneWireTemp().

float getOneWireTemp2() { //get OneWire temp.
  byte data[2]; //array to store data retrieved from sensor.
  oneWire.reset();
  oneWire.select(address);
  oneWire.write(0x44, 1); //start conversion.
  oneWire.reset();
  oneWire.select(address);
  oneWire.write(0xBE); //read scratchpad.
  
  for (byte i = 0; i < 2; i ++) {
    data[i] = oneWire.read(); //collect data.
  } //end for.
  
  int16_t raw = (data[1] << 8) | data[0]; //convert raw data to C.
 
  return (float)raw / 16.0;
} //end getOneWireTemp().

So onto my question: I get that Im sending the array as an argument to the function that is taking it IN as a pointer. Would you ever send a pointer OF the array AS the argument? Again, my grasp of pointers is very limited at this point so any very help is very much appreciated.

Would you ever send a pointer OF the array AS the argument?

Pointers point TO. It doesn't make sense to talk about a pointer OF anything.

It all depends on the situation doesn't it?
If I had multiple onewires, I'd create a function and send in the pointer to a particular address of the onewire.

If I just have one onewire, why bother.