Zum einen, bevor ich erklären, hier ist der Code in C:Wie finden Sie die Größe einer Zeichenfolge in einer Funktion in C?
#include <stdio.h>
void printSize(char* str);
int main()
{
char a[100] = "StackOverflow";
printSize(a);
return 0;
}
void printSize(char* str)
{
int n = sizeof(str)/sizeof(char);
printf("%d" ,n);
}
Wie Sie schon sehen, ich versuche, meine Funktion zu erhalten, den Wert „100“ zu drucken, wie 100 ist die Größe, die ich zugewiesen haben zu meinem char
Array a
. Jedoch bekomme ich 8 als meine Antwort. Jetzt weiß ich, warum ich hier 8 bekomme, weil es die Größe des Zeigers druckt. Also meine Frage ist, wenn ich diese Methode nicht verwenden kann, um den Wert von "100" auszudrucken, wie kann ich dann den Speicher herausfinden, der a
aus der Funktion zugewiesen ist?
Dank
Sie können es nicht mit einfachen Methoden finden. Normalerweise wird der Funktion ein weiterer Parameter hinzugefügt, 'int size', der die Größe des Arrays angibt. – atturri
[Die Länge eines Zeichen-Arrays in C finden] (http://stackoverflow.com/q/4180818/995714) –
Also gibt es grundsätzlich keine Möglichkeit, es in C zu tun? – theprogrammer094