Hallo,
Ich habe folgendes Problem bzw. folgende Frage:
Wieso kann man Char-Arrys (strings) in Funktionsheader mit "Zeiger" bezeichnen?
Beispiel, wie ich dies meine hier:
Alles anzeigen
Ausgabe:
Dies ist ein Test
Dies ebenfalls
---- Werte ausgegeben ----
ab
cd
---- Werte ausgegeben ----
Vor der Funktion: a
Adresse: 0x27fee0 Wert:b Ohne Addresszeichen oder Stern:bcd
---- Wert ausgegeben ----
Nach der Funktion:b
Ich hoffe mir kann jemand die Augen öffnen :Very Happy:
// EDIT:
Ich hab es nun rausbekommen bzw so erklärt bekommen (für alle Interessenten oder Leute die mich korrigieren wollen xP):
Man kann Arrys nicht so "übergeben". Man müsste alles einzeln kopieren. Daher wird per Zeiger auf den Speicher, wo sich alle Elemente befinden, verwiesen. Man benötigt jedoch kein & bzw. kann dies "normal" angebenen, da die Arbeit abgenommen wird.
Ich habe folgendes Problem bzw. folgende Frage:
Wieso kann man Char-Arrys (strings) in Funktionsheader mit "Zeiger" bezeichnen?
Beispiel, wie ich dies meine hier:
Quellcode
- #include <iostream>
- using namespace std;
- void Test1(char *a, char b[]) // 1. Argument: Wieso ein "*a". Dies zeigt doch, dass es sich um einen Zeiger handelt. 2. Argument: Eindeutig - eine Char-Arry.
- {
- cout<<a<<endl;
- cout<<b<<endl;
- cout<<" ----- Werte ausgegeben ----- \n";
- }
- void Test2(char *a) // Hier ein "echter" Zeiger. Der Wert ist vorer 'a' und dann 'b'.
- {
- *a = 'b';
- cout<<"Adresse:"<<&a<<" Wert:"<<*a<<" Ohne Adresszeichen oder Stern:"<<a<<endl;
- cout<<" ----- Wert ausgegeben ----- \n";
- }
- int main()
- {
- Test1("Dies ist ein Test","Dies ebenfalls"); // Gleich Strings eintragen
- char Str[3]; // 1. Variante
- Str[0] = 'a';
- Str[1] = 'b';
- char Str2[3] = "cd"; // 2. Variante
- Test1(Str,Str2); // Strings in Char-Arrys
- ///////////////////////////////////////////////////////////////////////
- char x = 'a';
- cout<<"Vor der Funktion:"<<x<<endl; // 'a'
- Test2(&x); // Adresse übergeben
- cout<<"Nach der Funktion:"<<x<<endl; // 'b' - Zeiger tat seine Arbeit.
- cin.get();
- }
Ausgabe:
Dies ist ein Test
Dies ebenfalls
---- Werte ausgegeben ----
ab
cd
---- Werte ausgegeben ----
Vor der Funktion: a
Adresse: 0x27fee0 Wert:b Ohne Addresszeichen oder Stern:bcd
---- Wert ausgegeben ----
Nach der Funktion:b
Ich hoffe mir kann jemand die Augen öffnen :Very Happy:
// EDIT:
Ich hab es nun rausbekommen bzw so erklärt bekommen (für alle Interessenten oder Leute die mich korrigieren wollen xP):
Man kann Arrys nicht so "übergeben". Man müsste alles einzeln kopieren. Daher wird per Zeiger auf den Speicher, wo sich alle Elemente befinden, verwiesen. Man benötigt jedoch kein & bzw. kann dies "normal" angebenen, da die Arbeit abgenommen wird.
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von KornChief ()