mikrocontroller.net

Forum: PC-Programmierung Referenz ausgenen C++


Autor: Lukas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo wieso geht das nicht


        char *string = "Lukas";
  //while (*string)
  //{
  //  cout << *string;
  //  *string++;
  //}
  char &strinreferenz = *string;

  while (strinreferenz)
  {
    cout << strinreferenz;
    strinreferenz++;
  }

Ich möchte statt mithilfe des Zeigers den Namen Lukas ausgeben

deshalb habe ich den *string mit einer Referenz verknüpf

Er zeigt aber nur L an

Autor: Random ... (thorstendb) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
*pPointer ist der erste Wert des Pointers, also 'L'
pPointer ist für printf, cout ein zeiger auf einen string, der 
Nullterminiert ist, das wäre "Lukas\0"

VG,
/th.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
soweit ich weiss geht das nicht, weil man nur Zeiger addierne kann und 
keine Referenezen.

Soetwas sollte man der Ordnunghalber auch nicht machen, Referenzen 
zeigen genau auf eine andere Variable/Object aber Zeigen zeigen auf 
speicherbereichen von einen Typ.

Autor: Daniel M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So

using namespace std;
#include <iostream>

int main()
{
        char *string = "Lukas";
  //while (*string)
  //{
  //  cout << *string;
  //  *string++;
  //}
  char *&strinreferenz = string;

  while (*strinreferenz)
  {
    cout << *strinreferenz;
    strinreferenz++;
  }
}

würde es gehen.
Aber es wird trotzdem der eigentliche Zeiger "string" verändert, da ja 
eine Referenz darauf verwendet wird.
Was willst du denn erreichen?
Dass eben der Zeiger nicht verändert wird?
Dann brauchst du nur einen Zeiger anstatt einer Referenz auf den 
originalen zu machen, was so aussehen würde:

using namespace std;
#include <iostream>

int main()
{
        char *string = "Lukas";
  //while (*string)
  //{
  //  cout << *string;
  //  *string++;
  //}
  char * pstring = string;

  while (*pstring)
  {
    cout << *pstring;
    pstring++;
  }
}

Mfg

Daniel

Autor: Daniel (root) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
char *string = "Lukas";
  //while (*string)
  //{
  //  cout << *string;
  //  *string++;
  //}

warum veränderst du zusätzlich den String? Gib ihn nochmal mal aus ;-)
string++ muss es heissen.

noch etwas: nehne es cString, name, message, msg oder so,
aber besser nicht string. Es gibt nämlich std::string. Damit
erleichterst du allen anderen das Verstehen des Codes. Alle
wissen dann, dass es ein rohes Zeichenpuffer ist.

ich benutze gerne pc dafür, pointer to char.
Entsprechend dann char ** ppc = &pc;

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.