Ich verstehe, wie die Größe zu finden, ein String-Typ Array: auchWie kann ich die Größe eines (* char) -Arrays innerhalb einer Funktion finden?
char * shuffleStrings(string theStrings[])
{
int sz = 0;
while(!theStrings[sz].empty())
{
sz++;
}
sz--;
printf("sz is %d\n", sz);
char * shuffled = new char[sz];
return shuffled;
}
Eine meiner Fragen in dem obigen Beispiel ist, warum muss ich um 1 die Größe zu verringern, die wahre Anzahl der Elemente zu finden im Array? Also, wenn der Code sah wie folgt aus:
char * shuffleStrings(char * theStrings[])
{
//how can I find the size??
//I tried this and got a weird continuous block of printing
int i = 0;
while(!theStrings)
{
theStrings++;
i++;
}
printf("sz is %d\n", i);
char * shuffled = new char[i];
return shuffled;
}
Was möchten Sie mit Ihrer zweiten Frage erreichen? – Elipzer
Keine Ahnung, was Sie fragen, aber Ihre Funktionsparameter sind Zeiger, daher gibt es keine Möglichkeit, die Länge des Arrays zu kennen, auf das sie zeigen könnten. Sie benötigen a, um eine Länge getrennt zu übergeben, oder einen Sentinel-Wert zu verwenden, was das erste Beispiel zu tun scheint. – juanchopanza
Ich habe deine Fragen beantwortet. Ich bin mir jedoch nicht sicher, was Sie mit dem Shuffle-Pointer versuchen: Es ist ein Zeichen pro String in der Tabelle und ohne Platz für einen Null-Terminator. Willst du nicht die Gesamtgröße darin die Strings mischen? Oder möchten Sie darin die Indizes der gemischten Strings speichern? Im letzten Fall sollten Sie 'Sizet_t *' anstelle von 'char *' (oder besser 'vector shufflled (i)') betrachten. –
Christophe