Sizeof in Funktion anwenden
-
FragenstellerC schrieb:
Hi,
interessant ist der sizeof Operator in C. Ich habe eine Funktion geschrieben, an die ein Array übergeben wird. Warum funktioniert die sizeof Funktion in der MAIN aber nicht in der Funktion?
der weiß nicht wie groß das array ist
musst irgendwie die länge mitgeben
-
Weil da kein Array übergeben wird sondern nur die Anfangsadresse.
In der Funktion hast du also einen Pointer.Das steht in jedem noch so besch... Buch über C drin.
Auch in den allermeisten C-Tutorials (die Arrays behandeln) steht das.
-
Ah also müsste in der Funktion:
function(*arr) stehen?
-
FragenstellerC schrieb:
function(*arr)
Wat? Was willst du damit erreichen?
Hast du dir überhaupt auch nur mal angeschaut, was mein Link so liefert? Mein erster Treffer. Muss zwar nicht deiner sein, aber trotzdem sollte da genug drinstehen.
-
Also wenn ich das richtig verstanden habe, dann soll man garnicht mit dem Sizeof in der Funktion arbeiten. Man sollte lieber vorher die Länge abfragen und diesen Wert als Parameter übergeben
-
Bingo.
-
Aber wie ich die Arrays übergebe ist richtig?
-
Yup.
int main(void) { int arr1[] = { 1,2,3,4,5, 7 }; int arr2[] = { 2,4,1,4,3, 6 }; function(arr1,arr2,(sizeof(arr1) / sizeof(arr1[0]))); return 0; }
Damit übergibst du der Funktion Zeiger auf deine Arrays und als Parameter die Anzahl der Elemente in diesen.
-
Super, dann habe ich das soweit verstanden und gelernt warum sizeof nicht geht.
Das ist gut. Danke euch!
-
FragenstellerC schrieb:
Super, dann habe ich das soweit verstanden und gelernt warum sizeof nicht geht.
Das ist gut. Danke euch!c-arrays speicher keine länge mit. die steht nur zur zur compile-time bereit, an den stellen, an denen die definition des arrays sichtbar ist.
-
swapper schrieb:
[...] die steht nur zur zur compile-time bereit, an den stellen, an denen die definition des arrays sichtbar ist.
Geh weg! array-to-pointer-decay. Damit ist alles gesagt.