Übergabe von Zeichenketten in Funktionen - Verständnisproblem mit Zeigern

Hallo,
ich möchte gerne einen Textstring einem Unterprogramm übergeben, und scheitere mit der Verwendung von Pointern:
Hier unten will ich den Zeiger vom String "Text" auf "Zeiger" legen, in Ausgabe übergeben und dort de-referenzieren.
Es kompiliert nicht, und er meckert schon das println an:

String Text= "Platzhaltertext";
int Zeiger;

void Ausgabe(int *Blabla) {
  println(&Blabla);
}

void setup() {
  Text = "Hallo";
  Zeiger = *Text;
  Ausgabe(Zeiger);
}

void loop() {
}

In den Webseiten mit Erklärungen zu Pointern ist es sehr irritierend, wenn die Pointer-Sternchen * manchmal vor, und manchmal nach den Variablennamen gesetzt werden.

Gibt es sinnvollere Wege, Strings an Unterprogramme zu übergeben ?
Oder für Newbies einfachere, die trotzdem nicht so speicherplatzfressend sind ? ?

Danke & Gruß,
Tütenflieger

Du bringst C Strings und Arduino String Objekte durcheinander. C Strings sind Null-termimierte char Arrays. Arrayvariablen entsprechen Zeigern auf das erste Element. Deshalb übergibt man die als Zeiger. String Objekte wie in deinem Beispiel übergibt wie andere Objekte auch als Referenz - nicht als Zeiger

Und das ist auch kein Zeiger:

int Zeiger;

Das ist ein Zeiger auf einen Integer, also auch falsch

int *Blabla

So geht es richtig:

char text[] = "Blah";
print(text);

void print(const char* str)
{
   Serial.println(str);
}
String text = "Blah";
print(text);

void print(String& str)
{
   Serial.println(str);
}

Danke Serenifly,
für den Beispielsketch,
sowie

Du bringst C Strings und Arduino String Objekte durcheinander.

Das war ein wichtiger Punkt meines Unverständnisses von Erklärungen im Netz die sich auf Std. C bezogen...

Gruß,
Tütenflieger