[C] - "Passing Argument of makes integer without a cast", wo ist mein Fehler?

InfDude

Cadet 4th Year
Registriert
Apr. 2016
Beiträge
95
Ich hab gegooglet, der Fehler ist ja keine Seltenheit. Dennoch hab ich den Fehler noch immer und komm nicht drauf warum.. Dabei geht es bei mir um 2 Funktionsaufrufe innerhalb einer Funktion.

Ich habe:

void count_sort(int array[], int len,) {

int *count_array=malloc(max_value*sizeof(int)); //Notwendig fürs Sortieren
Funktion1(array, len, count_array);
Funktion2(array, len, count_array);
free(count_array);

}


Funktion1 und Funktion2 kriegen die entsprechenden Parameter wie folgt:
void Funktion1(int array[], int len, int count_array[])
Funktion2 ebenso.

Bei den Funktionsaufrufen zeigt er mir die genannte warning an. Wieso? Egal wie ich die Parameter ändere, der Fehler bleibt. Die Parameter von Funktion1 und Funktion2 sind ebenfalls als "Warning" markiert: "expected 'int' but argument is of type 'int*'"

Hier ist ebenfalls egal wie ich die ändere, der Fehler bleibt... irgendjemand ein paar Ratschläge? Würde mich sehr freuen. Da dies mein erster Beitrag dieser Art ist, hoffe ich dass ich nicht irgendwie unpraktisch gepostet habe o.Ä..

Nebenbei: Das Programm an sich läuft, aber nicht richtig. Ich gehe davon aus, dass irgendwas bei den Aufrufen schief gelaufen ist. Weil der Algorithmus an sich funktioniert, wenn ich ihn nicht über 3 verschiedene Funktionen laufen lasse
 
Zuletzt bearbeitet:
Ich steige grad nicht durch, was da wo für Fehler/Warnungen kommen? Poste doch mal den Code mit Zeilenangaben und die vollständige Rückmeldung des Compilers.

Und auch die Deklarationen von Funktion1 und Funktion2 wären ganz gut. Immerhin gibt es ja beim Aufrufen derer einen Fehler, aber von uns weiß keiner, was die genau erwartet.

Welchen Compiler nutzt du?
 
die Deklaration ist unüblich in C.
Es muss heißen

void count_sort(int *array, int len) // hier war ein Komma nach len zu viel
{
int *count_array=malloc(max_value*sizeof(int)); //Notwendig fürs Sortieren
Funktion1(array, len, count_array);
Funktion2(array, len, count_array);
free(count_array);
}

void Funktion1(int *array, int len, int *count_array);
void Funktion2(int *array, int len, int *count_array);
 
Du hast noch nicht gesagt, wo genau der Compiler den Fehler meldet, also in welcher Zeile.
Und bitte benutze die CODE-Formatierung oben in der Editorleiste des Forums.
 
@Aliosy

Wenn ich das so mache, gibt es zusätzlich den Error "Subscripted Value is neither array nor pointer nor vector", wahrscheinlich da ich "array" und "count_array" innerhalb der Funktion benutze. Die anderen Fehler bleiben jedoch. Der Code ist ziemlich lang.. ich versuche mal eben einfach Screenshots der 3 Funktionen zu posten..

Code:



Fehlermeldungen:

 
schau genau sort_calculate_Counts an, hier fehl ein Pointer auf Array. du willst einen Address-Pointer auf Daten und nicht einen Zahlwert.
Ergänzung ()

außerdem stimmen deine Funktionsaufrufe mit den Funktionsrümpfen überein.
deine Funktionsprototypen müssen zu den Funktionsaufrufen passen. Du darfst nichts weglassen.
 
Also jetzt scheint es fast zu funktionieren, markiert mir nur noch mein "free(count_array);"

Hab ich den falsch benutzt? So hab ichs verstanden.Oder hab ich ihn falsch platziert? Muss der nicht in die Funktion in dem das dynamische count_array erstellt wurde?

Und ich wusste auch nicht, dass die Reihenfolge beim Aufruf eine Rolle spielt.. Jetzt weiß ich's. Danke dafür!
 
Aliosy schrieb:
die Deklaration ist unüblich in C.
Es muss heißen

void count_sort(int *array, int len)

Quatsch. Es muss gar nichts. Als formale Parameter sind int* und int[] identisch.

Aliosy schrieb:
schau genau sort_calculate_Counts an, hier fehl ein Pointer auf Array.
Das wäre wiederum int (*array)[].

InfDude schrieb:
markiert mir nur noch mein "free(count_array);"
Das ist keine Fehlerbeschreibung. Wer markiert? Was ist der Fehler? Lies die Fehlermeldungen deines Compilers mal. Die sind im Normalfall aufschlussreich (wie auch die mit dem vergessenen "*") und poste sie nicht nur im Forum.
 
Zurück
Oben