2010-11-20 3 views

Antwort

2

Wenn Sie wirklich ein einzelnes Zeichen haben:?

char buff = (char)*ptr; 

Wenn Sie eine Zeichenfolge, die ich vermute wie du reden über Zeichen über Looping:

char *buff = strdup(ptr); 
+2

Beachten Sie, dass "strdup" nicht ISO C ist. Wenn Ihre Implementierung keine hat, finden Sie hier eine: http://stackoverflow.com/questions/252782/strdup-what-does-it- do-in-c/252802 # 252802 – paxdiablo

1

Jede Art und Weise die Speichermenge zur Zeit für den Zeigerwert zugeordnet retreive?

Nicht in dem Sinne, den Sie suchen, nein.

Im Sprachsinn ist natürlich die Menge des für den Zeigerwert zugewiesenen Speichers (in Frage) sizeof(unsigned char *). Dies korreliert (wiederum natürlich) nicht mit der Größe des Speicherblocks, auf den der Zeiger zeigt. Ein Zeiger enthält einfach keine solche Information.

Wenn Sie (aus irgendeinem Grund) die Größeninformationen nicht zusammen mit dem Zeiger übergeben können, müssen Sie einen Wert von unsigned char angeben, um das Ende des Speicherblocks anzugeben (und diesen Wert dem Ende des Speicherblocks zuweisen). (So ​​arbeiten Strings in C). Die einzige Möglichkeit, die Länge des Blocks zu finden, besteht darin, die Werte zu durchlaufen.

Warum haben Sie einen Zeiger auf unsigned char, wenn es wirklich auf char zeigt? Übrigens, char buff ist kaum ein Puffer, da es nur einen einzigen Wert von char enthält.