Mit memset, um ein array

Ich bin ein Neuling auf C noch, und ich habe ein problem mit der memset-Funktion.

Gebe ich einen char * an eine Funktion, und in dieser Funktion habe ich ein array erstellen, und verwenden Sie dann memset einstellen der einzelnen Werte. Ich habe mit dbx zu beobachten, diese variable beim Eintritt in die Funktion, und aus irgendeinem Grund wird es auf "" nachdem wir pass memset.

Erstens, warum ist das so? Ich gehe davon aus, dass memset werden müssen zurücksetzen den Speicher, wo der char * ist?

Zweitens gibt es einen besseren Weg, um jedes element als "0"?

Hier ist mein code:

static char *writeMyStr(char *myStr, int wCount) {

   //here myStr is set to "My String is populated"  

   char **myArr;
   myArr = (char **) malloc(sizeof(char *) * wCount);
   memset(myArr, 0, sizeof(char *) * wCount);   //myStr is set to ""

   ... populate array ... 

}
Diese Leute sind Idioten. Der Rückgabewert von malloc ein void *. Sie können nichts tun, ohne casting, entweder implizit oder explizit.
Das ist C, nicht C++. In C++ müssen Sie Stimmen.
Oder vielleicht sind diese Menschen einfach wissen, C.
Es sei denn, Sie benötigen, rufen Sie malloc, weil Sie haben, um die Interaktion mit C-code, zum Beispiel.
in C, wenn Sie nicht wirken, lint wird (richtig) beschweren. Ist es eigentlich möglich in C Zeiger unterschiedliche Größen haben und für eine uncast Zuordnung zu verlieren Dinge.

InformationsquelleAutor Doug Molineux | 2012-07-17

Schreibe einen Kommentar