How to serial print an array?

I’ve been trying to find a way to print an array with the Serial.print command.
So far the code I’ve got looks like so (everything in the loop before the floats is fairly irrelevant):

template<class T> inline Print &operator <<(Print &obj, T arg) { obj.print(arg); return obj; }
void setup() {

void loop() {
  int name = 1;
  int age = 3;
  Serial << "My name is " << name << " and I am " << age << " years old.";
  String bob1 = "bob";
  float f1 = 1.31;
  float f2 = 2.39;
  float f3 = 3.01;
  float arr[3] = { f1, f2, f3 };
  Serial << f1 << "  " << f2 << "  " << f3;

I’d like for the last Serial.println to just be Serial.println(arr);
But if I do this I get an error message stating 'call of overloaded ‘println(float [3])’ is ambiguous, which I honestly don’t understand.
Is there a way to print an array using Serial.print?

On another note, is there a way to “transform” the information stored in ‘Serial’ into a string of its own?
Like a working version of:“String string1 = Serial;” inbetween the Serial and Serial.println,

Is there a way to print an array using Serial.print?

iterate over the array with a for loop

for(int i = 0; i < size_of_myArray; i++)

Look up the C++ union structure. It allows you to define a data type which may be stored in one format, and read out in another. I use it all the time to move floats or other data non-byte types into an array of bytes, transfer the array as bytes via serial, and read out the results as floats. When it comes to serial links, union is a very worthwhile construct to master.

+1 to jrdoner for both good advice and mysticism.

Union can be used to easily convert between byte arrays and other data types. A quick search found a good post. From that post:

union Data {
     byte b[2];
     int value;

int main( ) {
     union Data data;
     data.b[0] =;
     data.b[1] =;
     bearing =data.value;