Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Zeiger auf Zeiger

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
17.10.2007, 18:47 Uhr
HansGeorg



Hallo, ich hab folgende Situation. Ich habe einen C-String der ABC heißt. der liegt auf einem Zeiger. es gibt noch eine andere variable die darauf zeigt ich hab also einen char **

ich hab jetzt folgendes problem, ich möchte auf den Inhalt der Variable zugreifen un die Länge des Strings ermitteln. Wie geht das? Ich muss irgendwas dereferenzieren oder? Was ich mich dann auch noch Frage, wie kann ich jetzt z. B. den zeiger auf dem zeiger incrementieren? also nur den zeiger nicht den inhalt?

dann noch eine frage, ich hab noch ein weiteres char * vorliegen, ich möchte jetzt die adresse von dem in den char ** reinschreiben, sozusagen einfach ersetzen, geht das? also wenn ich wie oben dann den inhalt auslese, dann soll das char * erscheinen und nicht der alte wert.

sorry für die anfängerfragen, aber zeiger verwirren mich etwas

gruß und danke

hans
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
17.10.2007, 19:01 Uhr
xXx
Devil



C++:
/* anfordern */
char** ptr_arr = new char*[10];
for (std::size_t i = 0; i < 10; ++i)
{
    ptr_arr[i] = new char[32];
    /* füllen */
    std::sprintf(ptr_arr[i], "String %d", i);
}

// ... mach was du willst :P

/* freigeben */
for (std::size_t i = 0; i < 10; ++i)
    delete [] ptr_arr[i];
delete [] ptr_arr;
... So ...


Zitat:
Ich habe jetzt folgendes Problem: Ich möchte auf den Inhalt der Variable zugreifen un die Länge des Strings ermitteln.


C++:
std::size_t string_length = std::strlen(ptr_arr[x]) /* + 1, falls NULL-Terminierungszeichen gebraucht */
So bekommst du vom Element x (index startet bei 0) die Länge bis zum nächsten '\0' ...

Soo das ganze macht man aber in C++ eigentlich einfach mit std::vector und std::string :P
std::string kümmert sich um das Managen deines char(bzw. was als Templateparameter bei basic_string angegeben ist) -Arrays aufm Heap.
std::vector ist ein dynamischer Array ... also praktisch was du mit T* arr = new T[x] machst ... wobei das noch ein wenig optimierter ist usw :P
=>

C++:
std::vector<std::string> arr;
for (std::size_t i = 0; i < 10; ++i) arr.push_back("Das ist ein Test!");
... und fertig :P
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
17.10.2007, 19:06 Uhr
HansGeorg



Hallo, ich möchte das ganze aber nicht umbedingt mit std::string und std::vektor

also klassisch

char * x = "Hallo";
char ** z = &x;
char * y = "Welt";

wenn ich das habe, wie kann ich jetzt das Hallo mit dem Welt austauschen?

Ach ja ich möchte kein zweidimensionales Char Array machen, einfach nur einen Zeiger auf dem zeiger, dann was auslesen aus z und die adresse von y speichern
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
17.10.2007, 19:30 Uhr
xXx
Devil


?

C++:
char* string_hello = "Hallo";
char** ptr_string = &string_hello;
std::cout << (*ptr_string) << std::endl; // Hallo
char* string_world = "Welt";
ptr_string = &string_world;
std::cout << (*ptr_string) << std::endl; // Welt
oder was willst du?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: